我正在努力学习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底部
这是怎么回事?我的基本状况有什么问题吗?日志是否显示了所放的内容和从堆栈中取出的内容?我本以为这个函数会在“它已经结束”时停止,但我不知道为什么它没有。
谢谢。
发布于 2015-09-18 15:27:45
当到达5时,返回语句就会触发。这意味着第五次调用count
时,它不会再次调用count
,然后也不会再次调用console.log
。
当它从第5次呼叫返回时,它将恢复第4次呼叫。
在第四次调用中,count
is 4
(count
是局部变量,每次调用count
有一个不同的变量),因此它在函数中运行最后的console.log
语句,到达函数的末尾并返回undefined
。然后继续进行第三个呼叫,以此类推。
发布于 2015-09-18 15:34:19
重点是,您的功能打印顶部和底部,如果没有终止之前。呼叫是在上下之间以及返回之间进行的。
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
https://stackoverflow.com/questions/32655672
复制相似问题