兔子生崽问题编程_兔子生崽问题

假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,一年以后可有多少对兔子?请编程求解该问题。

参考答案:依题意,兔子的繁殖情况如图所示。图中实线表示成兔仍是成兔或者小兔长成成兔;虚线表示成兔生小兔。观察分析此图可发现如下规律:

(1)每月小兔对数 = 上个月成兔对数。

(2)每月成兔对数 = 上个月成兔对数 + 上个月小兔对数。

综合(1)和(2)有:每月成兔对数 = 前两个月成兔对数之和。

0818b9ca8b590ca3270a3433284dd417.png

用fn(n=1,2,…)表示第n个月成兔对数,于是可将上述规律表示为如下递推公式:

0818b9ca8b590ca3270a3433284dd417.png

#include

int rabbit(int n)

{

if (1 == n || 2==n)

return 1;

else if (n >= 3)

return rabbit(n - 1) + rabbit(n - 2);

else

return -1;

}

int main()

{

int i,sum=0;

int array[13];

for (i = 1; i <=12; i++)

{

array[i] = rabbit(i + 1);

printf("%4d", array[i]);//递归调用

//sum += array[i];

}

sum = array[12];

printf("\nTotal=%d\n", sum);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值