递归的C语言实现
递归:简单来说就是自己调用自己。
下面用一个简单的例子说明递归的主要步骤
源码
#include<stdio.h>
void up_and_down(int);
int main(void){
up_and_down(1);
return 0;
}
void up_and_down(int n){
printf("Level %d: n location %p\n",n, &n);
if (n<4)
{
up_and_down(n+1);
}
printf("LEVEL %d: n location %p\n",n, &n);
}
输出
Level 1: n location 000000000061FE00
Level 2: n location 000000000061FDD0
Level 3: n location 000000000061FDA0
Level 4: n location 000000000061FD70
LEVEL 4: n location 000000000061FD70
LEVEL 3: n location 000000000061FDA0
LEVEL 2: n location 000000000061FDD0
LEVEL 1: n location 000000000061FE00
要点
- 每一个函数调用都有自己的变量
- 每次函数调用都会返回一次
- 递归函数位于递归调用之前的语句,均按被调函数的顺序执行
- 递归函数中位于递归调用之后的语句,均按被调函数相反的顺序执行
- 虽然每级递归都有自己的变量,但是并没有拷贝函数的代码。
关键点
练习题
- PTA 习题 2.6