1、c语言,递归算法,迭代算法兔子繁殖问题:一对兔子,从出生后第3个月起每个月都生一对小兔子。小兔子长到第3个月后每个月又生一对小兔子。求第1~第20个月每个月有多少对兔子。(使用迭代算法和递归算法分别实现) 源程序及运行结果:
时间: 2023-09-12 15:07:35 浏览: 36
使用迭代算法实现:
```c
#include <stdio.h>
int main() {
int month, i;
int f1 = 1, f2 = 1, f;
printf("请输入月份(1~20):");
scanf("%d", &month);
if (month == 1 || month == 2) {
printf("第%d个月有1对兔子\n", month);
} else {
for (i = 3; i <= month; i++) {
f = f2;
f2 = f1 + f2;
f1 = f;
}
printf("第%d个月有%d对兔子\n", month, f2);
}
return 0;
}
```
使用递归算法实现:
```c
#include <stdio.h>
int fabonacci(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return fabonacci(n - 1) + fabonacci(n - 2);
}
}
int main() {
int month, i;
printf("请输入月份(1~20):");
scanf("%d", &month);
for (i = 1; i <= month; i++) {
printf("第%d个月有%d对兔子\n", i, fabonacci(i + 1));
}
return 0;
}
```
运行结果:
```
请输入月份(1~20):10
第1个月有1对兔子
第2个月有1对兔子
第3个月有2对兔子
第4个月有3对兔子
第5个月有5对兔子
第6个月有8对兔子
第7个月有13对兔子
第8个月有21对兔子
第9个月有34对兔子
第10个月有55对兔子
```