fibonacci数列_C语言程序实例|Fibonacci数列

1a9abc7e91f37936b2c41ead5f825069.png

兔子生崽问题

13世纪意大利数学家Fibonacci在其所著的《算盘全集》一书中借助“兔子生崽”问题引入了一个著名的递推数列,即Fibonacci数列。

”兔子生崽“问题是采自民间的一道算题,问题的描述是这样的:”假设一对小兔的成熟期是一个月,即一个月可长成大兔子,那么,如果每对大兔子每个月都可以生一对兔子,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,一年以后可以有多少对兔子?“

82e0aeffb0879e41d48d16e3bb51058d.png

兔子繁殖问题的示意图

深入观察还可以发现其中的变化:

1.小兔对数和大兔的对数构成两个相同的数列,不过小兔对数数列向后推迟了一个月,因为上个月有几对大兔子,这个月就应有几对小兔,即每月小兔对数=上月大兔对数

2.每月大兔对数=上个月大兔对数+上个月小兔对数

于是就有:

f(1)=1 n=1

f(2)=1 n=2

f(n)=f(n-1)+f(n-2) n>=3

编写的程序一如下:

#include

#define YEAR 12

int main()

{

int f[YEAR+1]={0,1,2};//1月和2月兔子对数分别初始化为1,2,不使用f[0]

int month;

for(month=3;month<=YEAR;month++)//从3月份开始计算每个月总兔数

{

f[month]=f[month-1]+f[month-2];

}

for(month=1;month<=YEAR;month++)//输出12个月的总兔对数

{

printf("%d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值