gpt4 book ai didi

javascript - 了解递归函数在 javascript 中的工作原理

转载 作者:行者123 更新时间:2023-11-28 18:29:43 25 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)被调用时,它将转到该函数并检查条件 if i < 0 ,然后它将运行下一个代码 console.log('begin:' + i) .

之后,执行下一行代码,由于JavaScript是逐行执行的,所以下一行代码是foo(i-1)将被执行。

它采用当前值 i这是 3负 1,所以 foo(2)被调用并继续执行。

<小时/>

我的问题是:我的理解正确吗?。如果没有,请解释一下这段代码在做什么,否则任何人都可以简单地解释一下该函数何时停止被调用?

最佳答案

调用 foo(3) 时发生的情况如下(伪代码):

execute foo(3)
3 is greater than 0 thus log(begin 3)
execute foo(2)
2 is greater than 0 thus log(begin 2)
execute foo(1)
1 is greater than 0 thus log(begin 1)
execute foo(0)
0 is equal to 0 thus log(begin 0)
execute foo(-1)
-1 is less than 0 thus return
log(end 0)
log(end 1)
log(end 2)
log(end 3)
return

关于javascript - 了解递归函数在 javascript 中的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38322517/

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