兔子繁殖问题与解决方案

一、兔子繁殖问题

问题描述:

  • 兔子永远不死;
  • 兔子出生后,两个月(即从它生命中的第三个月开始)达到性成熟;
  • 兔子总是雌雄成对出生。每个月月初,每对性成熟的兔子正好生一对小兔;

计算第n个月的兔子数——rabbit(n)。

二、问题分解

rabbit(n)正好是第n个月之前活着的兔子数与第n个月月初出生的兔子数之和。在第n个月月初前,有rabbit(n-1)对兔子数,同时那些在第n-2个月活着的兔子在第n个月月初准备生产,即第n个月月初出生的兔子数是rabbit(n-2)。因此有递归关系式:

rabbit(n)=rabbit(n-1)+rabbit(n-2)    -----(A)

三、递归方法

根据实际问题,设置两个基本事件:rabbit(1)=1和rabbit(2)=1,由此,递归定义式为:

rabbit(n)=1 when  n=1 or n=2;

rabbit(n)=rabbit(n-1)+rabbit(n-2) when  n>2;

 

rabbit(1),rabbit(2),rabbit(3),... ... 称为Fibonacci序列,它是许多自然现象的模型。

 

rabbit(n)的Java方法:

 

四、迭代方法

rabbit的递归解决方案本身效率很低,当n相当大时,许多值可能重复计算上亿次。迭代解决方案用向前推替代向后推,并且每个值只计算一次,即使n非常大也可以计算,其Java方法如下:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值