数据结构-递归函数的调用栈过程
这道题考察的是递归函数的调用栈过程。
·
递归函数的调用栈过程
程序的执行过程:
main()
函数首先被调用,此时栈底是main()
的信息。main()
函数调用S(1)
,此时S(1)
的信息被压入栈中,位于main()
之上。S(1)
函数内部调用S(0)
,因为n
不等于 0,所以S(1)
会递归调用S(0)
。此时S(0)
的信息被压入栈中,位于S(1)
之上。
此时栈的状态是:
- 栈底:
main()
- 中间:
S(1)
- 栈顶:
S(0)
因此,选项 A main()->S(1)->S(0)
是正确的。
继续分析剩余的执行过程:
S(0)
执行完毕,返回值 0,此时S(0)
的信息从栈中弹出。S(1)
接收到S(0)
的返回值,计算S(1) = S(0) + 1 = 0 + 1 = 1
,然后S(1)
的信息从栈中弹出。main()
接收到S(1)
的返回值,输出结果 1,然后main()
的信息从栈中弹出。
最终,栈被清空,程序执行结束。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)