【发布时间】:2016-11-22 13:29:18
【问题描述】:
我有以下递归函数的例子,我不明白的是事情发生的顺序:
function power(base, exponent) {
if (exponent == 0)
return 1;
else
return base * power(base, exponent - 1);
}
函数什么时候返回值,在所有过程结束时还是每次?
【问题讨论】:
-
你可以只记录参数。例如,在声明电源后立即添加
console.log(base,exponent)。一切都将揭晓! -
@TJHeuval:更好的是,使用适当的调试器进行检查。
printf式调试在 2011 年几乎没有地位! :-) -
离题,但请注意,如果传递负指数,您的
power函数将失败。它会以越来越低的负指数反复调用自己,直到达到递归限制并以“递归过多”错误退出。在其他一些环境中,我们知道它的另一个名称:stack overflow! ;-)
标签: javascript recursion