递归演示
#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或者其他等价的测试条件在函数的形参等于某项特定值的时候终止递归,因此,每次递归都要用不同的形参值。