Scala 为什么这个递归函数赢了';行不通
我有这个函数递归地计算Scala 为什么这个递归函数赢了';行不通,scala,recursion,Scala,Recursion,我有这个函数递归地计算x到n的幂: def pow(x:Double,n:Int):Double={ if (n==0) 1 else if (n<0) 1/pow(x,-n) else if (n%2 == 1) x*pow(x,n-1) else pow(pow(x,n/2),2) } def pow(x:Double,n:Int):双精度={ 如果(n==0)1 否则,如果(n您总是在最后一种情况下调用pow(…,2),并且最后一种情况是唯一处理n=
x
到n
的幂:
def pow(x:Double,n:Int):Double={
if (n==0) 1
else if (n<0) 1/pow(x,-n)
else if (n%2 == 1) x*pow(x,n-1)
else pow(pow(x,n/2),2)
}
def pow(x:Double,n:Int):双精度={
如果(n==0)1
否则,如果(n您总是在最后一种情况下调用
pow(…,2)
,并且最后一种情况是唯一处理n==2
的情况。因此…在某一点上使用您的方法,您最终会执行以下操作:
pow(pow(x,1),2) -> pow(x*pow(x,0),2) -> pow(x,2) -> pow(pow(x,1),2) -> ...
这是因为n==2仅由最后一个条件处理,该条件最终会一次又一次地调用自身
pow(pow(x,1),2) -> pow(x*pow(x,0),2) -> pow(x,2) -> pow(pow(x,1),2) -> ...