首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这个递归函数在做什么?

这个递归函数在做什么?
EN

Stack Overflow用户
提问于 2015-09-18 15:23:57
回答 2查看 58关注 0票数 1

我正在努力学习Javascript中的递归,并编写了它来跟踪一个简单的递归函数。

代码语言: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底部

这是怎么回事?我的基本状况有什么问题吗?日志是否显示了所放的内容和从堆栈中取出的内容?我本以为这个函数会在“它已经结束”时停止,但我不知道为什么它没有。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-18 15:27:45

当到达5时,返回语句就会触发。这意味着第五次调用count时,它不会再次调用count,然后也不会再次调用console.log

当它从第5次呼叫返回时,它将恢复第4次呼叫。

在第四次调用中,count is 4 (count是局部变量,每次调用count有一个不同的变量),因此它在函数中运行最后的console.log语句,到达函数的末尾并返回undefined。然后继续进行第三个呼叫,以此类推。

票数 2
EN

Stack Overflow用户

发布于 2015-09-18 15:34:19

重点是,您的功能打印顶部和底部,如果没有终止之前。呼叫是在上下之间以及返回之间进行的。

代码语言:javascript
运行
复制
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 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32655672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档