gpt4 book ai didi

scala - 为什么这个递归函数不起作用

转载 作者:行者123 更新时间:2023-12-02 21:31:40 24 4
gpt4 key购买 nike

我有这个函数来递归地计算xn次方:

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):Double={
if (n==0) 1
else if (n<0) 1/pow(x,-n)
else if (n%2 == 1) x*pow(x,n-1)
else {val y=pow(x,n/2); y*y}
}

它按预期运行。谁能告诉我第一个实现错误的原因是什么。我正在尝试回答本书第 2 章中的问题 10 Scala For Impressive

最佳答案

用你的方法在某个时候你最终会做:

pow(pow(x,1),2) -> pow(x*pow(x,0),2) -> pow(x,2) -> pow(pow(x,1),2) -> ...

这是因为 n==2 仅由最后一个条件处理,最终会一遍又一遍地调用自身......

关于scala - 为什么这个递归函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22167478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com