为了账号安全,请及时绑定邮箱和手机立即绑定

帮一下小白。。。

帮一下小白。。。

C C++
qq_踩了口香糖_04206687 2016-11-25 17:32:24
怎么理解递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反?最好有个例子解释一下
查看完整描述

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语句执行顺序正常,而递归调用语句之后的语句执行顺序相反。

查看完整回答
反对 回复 2016-11-25
  • 1 回答
  • 0 关注
  • 1221 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信