一、基本概念
递归算法是把问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解。
一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数)。
解决递归问题的一般步骤:
1、提出问题
2、找到需要的递归公式
3、确定边界条件
4、编写函数
二、举例
兔子产子问题
一对兔子从出生后的第三个月起,每个月都生一对兔子,小兔子长到第三个月后,每个月又生一对兔子。假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?
#include <stdio.h>
//兔子总数
int Sum(int n) {
if (n == 1 || n == 2) {
return 1;
}
else {
return Sum(n - 1) + Sum(n - 2);
}
}
int main() {
int i;
//使用循环语句,算每个月兔子总数,并输出结果
for (i=1; i <= 30; i++) {
printf("第%d个月:", i);
printf("%d\n", Sum(i));
}
return 0;
}