微盟属于营销型手机网站,seo计费系统源码,建设银行安全网站,网站备案的好处有哪些这道题考察的是递归函数的调用栈过程。
逐步分析程序的执行过程#xff1a;
main() 函数首先被调用#xff0c;此时栈底是 main() 的信息。main() 函数调用 S(1)#xff0c;此时 S(1) 的信息被压入栈中#xff0c;位于 main() 之上。S(1) 函数内部调用 S(0)#xff0c;因…这道题考察的是递归函数的调用栈过程。
逐步分析程序的执行过程
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() 的信息从栈中弹出。
最终栈被清空程序执行结束。