有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子子长到第三个月后每个月又生一对兔子。假设所有的兔子都不死,问第n个月时有几对兔子。即求第n个Fibonacci数例如输入1,输出1;输入2,输出1;输入3,输出2;输入4,输出3;C语言
时间: 2024-11-01 14:08:04 浏览: 4
子长–延川矿权区三叠系煤炭资源开发潜力评价
这是一个经典的动态规划问题,可以用斐波那契数列(Fibonacci sequence)来解决。在Fibonacci序列中,每个数字等于前两个数字之和,初始值通常是0、1。对于一对兔子繁殖的情况,可以理解为Fibonacci序列的一个特殊情况,因为在第n个月,兔子的数量就是前两个月兔子数量之和。
你可以用递推的方式在C语言中编写这个函数,例如:
```c
#include <stdio.h>
int fibonacci(int n) {
if (n <= 0) return 0;
else if (n == 1 || n == 2) return 1; // 第一个月和第二个月各有一对兔子
else {
int prevMonth = fibonacci(n - 1); // 上个月的数量
int currentMonth = fibonacci(n - 2); // 前几个月的数量
return prevMonth + currentMonth; // 当月兔子数量为上月加上前几个月
}
}
int main() {
int n;
printf("请输入月份:");
scanf("%d", &n);
printf("第%d个月时有 %d 对兔子。\n", n, fibonacci(n));
return 0;
}
```
当用户输入`n`时,程序会计算并打印出第`n`个月的兔子对数。比如输入4,就会得到3这对兔子。
阅读全文