#include <iostream> using namespace std; void A(int n); int main() { A(4); return 0; } void A(int n) { cout<<n<<" hello world.\n"; if(n>0) { A(n-1); } cout<<n<<" abc!\n"; }
这里时,就又回到顶部,不执行cout<<n<<" abc!\n";。但是输出结果似乎被计算机记住了,后面再按照先进后出的顺序输出了,是真的被记住了吗?是这样吗?
当n=0时,A(0),这一步 if(n>0) { A(n-1); } 不会执行,直接执行第19行。输出"0 abc",此循环结束,此次函数调用结束,返回至调用处,继续执行A(1)剩余的部分,于是。。。。。。
画一画recursion tree就明白了。 A(0)执行结束之后,A(1)执行第19行,A(1)执行结束后,A(2)执行第19行。。依此类推。
64,662
社区成员
250,487
社区内容
加载中
试试用AI创作助手写篇文章吧