gpt4 book ai didi

javascript - 试图理解递归函数的类似堆栈的行为

转载 作者:数据小太阳 更新时间:2023-10-29 06:06:09 26 4
gpt4 key购买 nike

我正在 MDN 上阅读关于函数的文章,我到达了递归部分,但我不明白最后一部分谈论使用类似堆栈的行为。

例子是那个:

function foo(i) {
if (i < 0)
return;
console.log('begin:' + i);
foo(i - 1);
console.log('end:' + i);
}
foo(3);

// Output:

// begin:3
// begin:2
// begin:1
// begin:0
// end:0
// end:1
// end:2
// end:3

关于该功能,我了解何时显示 begin 日志,但我不知道何时显示 end 日志。有人可以帮我解释一下吗?

最佳答案

所以基本上在执行 i-1 时每次调用 foo 时它都保持函数打开,它没有返回。它一直在继续,因此 begin 不断被调用,一旦它达到 0,最后一个函数调用就会返回。一旦发生这种情况,其他 foo 调用也可以开始完成。它们将从最旧到最新完成。

您可以通过 Philip Roberts 使用放大镜看到它的可视化. Here is a Loupe你的例子。

关于javascript - 试图理解递归函数的类似堆栈的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30220804/

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