gpt4 book ai didi

recursion - 尾递归与迭代算法

转载 作者:行者123 更新时间:2023-12-04 15:01:37 25 4
gpt4 key购买 nike

我找不到文章描述为什么尾部递归函数比迭代算法更可取。

我不是在问为什么尾部递归比简单递归更好,我认为到处都有简单的解释。

所以为什么

sum(n) = {
def sumImpl(n, acc) = if(n <= 0) acc else sumImpl(n - 1 , n + accumulator)
sumImpl(n, 0)
}

优于
sum = 0;
while(n--) sum += n

最佳答案

递归使程序更具可读性,但性能却很差。迭代过程可提供良好的性能,但可读性不强,并且可能需要局部变量来存储中间值(可变性)。使用尾递归,您将获得两全其美的优势,并且不需要“sum”变量(不变性)。这在计算大量的总和或阶乘时非常有用,因为在将结果转发到下一个递归函数调用时,您永远不会遇到stackoverflow异常。

在并行环境中,不变性非常重要。尝试编辑您的代码,然后将非常大的数字传递给该函数以查看区别。

进一步阅读here

关于recursion - 尾递归与迭代算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12893117/

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