怎么理解递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反?最好有个例子解释一下
1 回答
已采纳
这都不会
TA贡献72条经验 获得超92个赞
是这样的。
你可以运行一下下面这个程序。
#include<stdio.h> void recursion(int n) { if(n > 5) { return; } else { printf("进入第%d次递归调用\n", n); recursion(n+1); //递归,调用自己。 printf("执行了第%d次递归调用后的语句。\n", n); } } int main() { recursion(1); return 0; }
这个程序中
recursion(n+1);
是递归调用,而
printf("执行了第%d次递归调用后的语句。\n", n);
是位于递归调用后的语句。
这个程序的运行结果是
进入第1次递归调用
进入第2次递归调用
进入第3次递归调用
进入第4次递归调用
进入第5次递归调用
执行了第5次递归调用后的语句。
执行了第4次递归调用后的语句。
执行了第3次递归调用后的语句。
执行了第2次递归调用后的语句。
执行了第1次递归调用后的语句。
可以看到,递归调用语句之前的printf语句执行顺序正常,而递归调用语句之后的语句执行顺序相反。
- 1 回答
- 0 关注
- 1221 浏览
添加回答
举报
0/150
提交
取消