递归可以理解成“自己调用自己”。
递归可以分成“回溯”与“递推”两个部分。
我们来上一个谭浩强书本的例子
描述题目条件:
回溯阶段:
欲求第五个学生的岁数age(5),应该先知道第四个学生的岁数age(4)。age(5)=age(4)+2;
欲求第四个学生的岁数age(4),应该先知道第三个学生的岁数age(3)。age(4)=age(3)+2;
欲求第三个学生的岁数age(3),应该先知道第二个学生的岁数age(2)。age(3)=age(2)+2;
欲求第二个学生的岁数age(2),应该先知道第一个学生的岁数age(1)。age(2)=age(1)+2;
age(1)=10已知
递推阶段:
age(2)=age(1)+2;
age(3)=age(2)+2;
age(4)=age(3)+2;
age(5)=age(4)+2;
代码
#include "stdio.h"
int age(int n) /* 斐波那契的递归函数 */
{
int c;
if( n==1 )
c = 10;
else
c=age(n-1)+2;
return c;
}
int main() {
int age(int n);
printf("第五个学生的岁数%d",age(5));
}