gpt4 book ai didi

javascript - 这个递归函数在 JavaScript 中究竟是如何工作的?

转载 作者:搜寻专家 更新时间:2023-11-01 04:44:18 27 4
gpt4 key购买 nike

我有以下递归函数的例子,我不明白的是事情发生的顺序:

function power(base, exponent) {
if (exponent == 0)
return 1;
else
return base * power(base, exponent - 1);
}

函数什么时候返回值,是在所有过程结束时还是每次?

最佳答案

可视化一般递归中发生的事情的一种简单方法是:

  1. 函数调用的堆栈被创建:这个过程需要一个适当的终止条件来结束(否则你将有无限递归,这是邪恶的)
  2. 单个结果从堆栈中弹出:每个结果用于计算下一步,直到堆栈为空

即如果 base=5 且 exponent=3,则调用堆栈为(顶部的最后一个元素):

5*(5*(5*1))
5*(5*(5*power(5, 0)))
5*(5*power(5, 1))
5*power(5, 2)
power(5, 3)

然后每个被调用的函数都有真正的参数并准备好返回一个值(第一个元素在上面):

5*(5*(5*1))
5*(5*5)
5*25
125

请注意,这里的函数是按相反顺序计算的:首先是power(5, 0),然后是power(5, 1) , 依此类推.. 每次计算后都会释放堆栈的一个元素(即释放内存)。

希望对您有所帮助:)

关于javascript - 这个递归函数在 JavaScript 中究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6773914/

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