5.兔子产子问题

发布时间 2023-04-18 19:59:06作者: HA_wind

问题描述:

有一对兔子,从出生后的第 3 个月起每个月都生一对兔子。
 
小兔子长到第 3 个月后每个月又生一对兔子,假设所有的兔子都不死,问 30 个月内每个月的兔子总数为多少?

 

问题分析:

不满 1 个月的兔子为小兔子,满 1 个月不满 2 个月的为中兔子,满3个月以上的为老兔子。
 
可以看出,每个月的兔子总数依次为 1,1,2,3,5,8,13…这就是 Fibonacci数列。
 
总结数列规律:即从前两个月的兔子数可以推出第 3 个月的兔子数。

 

代码:

#include <stdio.h>

int main()
{
long fib1 = 1;
long fib2 = 1;
long fib = 0;
int i = 0;

printf("%12d%12d", fib1, fib2);

for (i = 3; i <= 30; i++)
{
fib = fib1 + fib2;
printf("%12d", fib);
if (i % 4 == 0)
{
printf("\n");
}
fib2 = fib1;
fib1 = fib;
}
printf("\n");
return 0;
}