Javascript 这个递归函数在做什么?
我正在努力学习Javascript中的递归,写这篇文章是为了跟踪一个简单的递归函数Javascript 这个递归函数在做什么?,javascript,logging,recursion,Javascript,Logging,Recursion,我正在努力学习Javascript中的递归,写这篇文章是为了跟踪一个简单的递归函数 function count(num){ console.log(num + " top"); if (num===5) return console.log("It has ended."); count(num+1); console.log(num + " bottom"); } count(1); 以下是输出: 1顶 2顶 3顶 4顶 5顶 它已经结束了。 4底部 3底部 2底部 1底部 那么这里发
function count(num){
console.log(num + " top");
if (num===5)
return console.log("It has ended.");
count(num+1);
console.log(num + " bottom");
}
count(1);
以下是输出:
1顶2顶
3顶
4顶
5顶
它已经结束了。
4底部
3底部
2底部
1底部 那么这里发生了什么?我的基本条件有什么问题吗?日志是否显示了堆栈上的内容和从堆栈上取下的内容?我本以为函数会在“它已经结束”时停止,但我不知道为什么它不会停止
谢谢。当您到达5时,return语句将启动。这意味着调用第五次
count
时,它不会再次调用count
,然后它也不会再次调用console.log
当它从第5次呼叫返回时,它将继续第4次呼叫
在第四次调用中,
count
是4
(count
是一个局部变量,对count
的每次调用都有一个不同的变量),因此它在函数中运行最后的控制台.log
语句,到达函数末尾并返回未定义的。第三个调用随后继续,依此类推。关键是,如果函数没有在之前终止,则会打印顶部和底部。在顶部和底部以及返回之间进行调用
first second third 4th 5h call of function
1 top
2 top
3 top
4 top
5 top
It has ended.
4 bottom
3 bottom
2 bottom
1 bottom
函数被多次调用…它只在“它已结束”时停止一次,但有四次没有停止。也许这会有所帮助:我想我可能需要阅读它。递归让我头疼,我基本上认为它是神奇的。谢谢。我快到了。调用count(num+1)
时,整个函数将重复,这就是为什么我们在日志中看到递增的计数。然后满足条件并记录“它已结束”。但当满足条件后记录递减计数时会发生什么?也就是说,我想我还不明白你的最后两段。@rswerve-它从调用的函数返回,并继续运行上一个函数(这是同一个函数,只是参数不同)。