0
我正在练习scala的简单递归函数。这是从一本书简单的递归函数错误 - java.lang.StackOverFlow错误 - 输出超过截止限制
def calculatePower(x:Int, y:Int): Long = {
if (x>=1)
x*calculatePower(x,y-1)
else 1
}
calculatePower(2,2)
我正在练习scala的简单递归函数。这是从一本书简单的递归函数错误 - java.lang.StackOverFlow错误 - 输出超过截止限制
def calculatePower(x:Int, y:Int): Long = {
if (x>=1)
x*calculatePower(x,y-1)
else 1
}
calculatePower(2,2)
您的方法堆栈溢出,因为它没有终止,堆栈帧累积,直到没有更多的空间。
if (x>=1) x*calculatePower(x,y-1)
您测试x
是否大于或等于1,但是在递归调用中您只能递减y
!
要检查x
但你是递减y
。这意味着您的基本情况将永远不会达到。
您正在检查x但减少y – slouc