递归

递归演示

#include<stdio.h>
void up_down(int n);
int main()
{ 
	up_down(1);
	return 0;
 } 
 
 void up_down(int n)
 {
	printf("%d location %u\n",n,&n);
	if(n<4)
		up_down(n+1);	
 	printf("RETURN %d location %u\n",n,&n);
 }

在这里插入图片描述
每一级递归变量都属于本级递归私有,可以假设有一条函数的调用链
在这里插入图片描述
1.每次函数调用之后都会返回一次,当函数执行完毕之后,控制权将被传回上一级递归,程序必须按顺序返回递归,从某级的up_down()返回上一级的up_down,不能跳级回到main()的第1级调用
2.递归函数中位于递归调用之前的语句,均按照被调函数的顺序执行,打印的语句位于递归调用之前,所以打印了4次
3.递归函数中位于递归调用之后的语句,均按照被调函数相反的顺序执行。如打印语句printf(“RETURN %d location %u\n”,n,&n);位于递归调用之后,其执行的顺序是4——3——2——1
4.递归函数必须包含能让递归调用停止的语句,通常用if或者其他等价的测试条件在函数的形参等于某项特定值的时候终止递归,因此,每次递归都要用不同的形参值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值