c语言编程:一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么n个月以后共有多少对兔子?
时间: 2023-08-01 09:07:48 浏览: 203
这是一道经典的兔子繁殖问题,可以使用递归或循环来解决。
假设在第n个月,共有F(n)对兔子,第n-1个月有F(n-1)对兔子,那么第n个月新增的兔子数量为F(n-1),因为所有兔子都不会死亡,所以第n个月的总兔子对数为F(n-1)+F(n-2)。
可以使用循环来计算:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入月份:");
scanf("%d", &n);
int f1 = 1, f2 = 1, f3, i;
for (i = 3; i <= n; i++) {
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
printf("%d个月后共有%d对兔子。\n", n, f2);
return 0;
}
```
也可以使用递归来计算:
```c
#include <stdio.h>
int rabbit(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return rabbit(n - 1) + rabbit(n - 2);
}
}
int main() {
int n;
printf("请输入月份:");
scanf("%d", &n);
int result = rabbit(n);
printf("%d个月后共有%d对兔子。\n", n, result);
return 0;
}
```
不过需要注意的是,递归算法的时间复杂度比循环算法高,对于大规模的计算可能会出现堆栈溢出等问题。
阅读全文