我只是在尝试一些递归,并注意到一些让我感到困惑的东西。让我用一些代码示例来说明:
function loop(x) {
if (x >= 10)
return x;
loop(x + 1); // the recursive call
}
loop(0);
上面的调用返回undefined
。如果我将其更改为
function loop(x) {
if (x >= 10)
return x;
return loop(x + 1); // the recursive call
}
loop(0);
然后它10
正确返回。
为什么会这样?return
该子句如何影响堆栈?
PS:类似的问题
编辑: 这是一张快速图片,概述了我所理解的内容。(我绝对没有油漆。)对吗?如果没有,我哪里出错了?