一个程序员家养 了一对刚出生的兔子,兔子出生第2月后每月都会生一对小兔子,小兔子出生后同样第2月后也会每月生一对兔子,这个程序员想知道如果兔子不死n月后家里会有多少对兔子
设计一个程序:输入n,输出兔子数量(2<n<30)
样例输入: 7
样例输出:13
样例输入: 12
样例输出: 144
int main() {
int i,month; //第一代兔子在一月出生,在第三个月生产,二月没有新兔子产生只有上一代兔子
/*
* month 1 2 3 4 5 6 7
* sum 1 1 2 3 5 8 13
*/
printf("输入月份:");
scanf("%d", &month);
int sum[40] = { 1,1 }; //第一个月兔子数量是1,第二个月兔子数量是1,第三个月兔子是1+1,第四个月是1+1 +1
for (i = 2; i < month; i++) {
sum[i] = sum[i - 1] + sum[i - 2];
}
printf("%d月有%d只兔子", month, sum[month - 1]);
return 0;
}
值得注意的是,该问题也可以用递归算法求斐波那契数列。递归算法,每次调用函数所使用的变量存放在不同的内存空间。递归调用的层次越多,同名变量占用的存储单元也就越多