Я практикую простую рекурсивную функцию scala. Это из книги

def calculatePower(x:Int, y:Int): Long = {

     if (x>=1)
         x*calculatePower(x,y-1)

     else 1

  }


calculatePower(2,2)
0
basam nath 5 Апр 2017 в 20:16

2 ответа

Лучший ответ

Ваш стек method переполняется, потому что он не завершается, а кадры стека накапливаются до тех пор, пока не останется больше места.

if (x>=1) x*calculatePower(x,y-1) Вы проверяете, является ли x больше или равен 1, но в рекурсивном вызове вы только уменьшаете y!

0
pedrofurla 5 Апр 2017 в 22:06

Вы проверяете x, но вы уменьшаете y. Это означает, что ваш базовый вариант никогда не будет достигнут.

2
Alvaro Carrasco 5 Апр 2017 в 17:21