怎么理解递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反?最好有个例子解释一下
                    
                    
                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 关注
- 1306 浏览
添加回答
举报
0/150
	提交
		取消
	