兔子产子与fibanacii序列

原创 2013年12月05日 14:26:00

获取第nValue1个月出生多少对兔子

 

这里最好把兔子理解为中子,两个中子对撞可以产生新的两个中子,即没有雌雄之分

第一个月 只有一对中子,

第二个月 一对中子对撞出新的一对中子,因此2th月出生的中子对数为1.

第三个月 还是第一个月的中子对撞出新的一对中子

第四个月 第一个月和第二个月的中子都能对撞出新的中子对,因此本月的新生中子对数为2对

设第n个月的新生中子对数为Bn,则Bn=【本月的老中子对数】

 

unsigned int GetBirthRabbitNum(unsigned int  nValue1)
{
 unsigned int al=1;
 unsigned int ah=1;
 unsigned int ai=0;

 if(nValue1==1||nValue1==2) return 1;

 for(unsigned int i=3;i<=nValue1;i++)
 {
  ai=ah+al;
  ah=ai;
  al=ah;
 }
 return ai;
}

 

 

 

 

a表示 n月的兔子
b表示n+1月的兔子
b - a表示 n+1月出生的兔子,在n+2月,这群兔崽子是没成熟的。

n+2月的兔子 = b(n+1月的兔子) + a(n月兔子生下的幼兔)

推算公式如下:
A【n+2】 = A【n+1】 + A【n】

 

 

0、公母都能生
1、上个月生的兔崽子还没长大这个月不能生
2、上个月生兔崽子的爹妈这个月都可以接着生,这个要算进来
3、上上个月生的兔崽子都长大了这个月可以生,这个要算进来
4、上上个月生兔崽子的爹妈已经包含在第2点上个月生兔崽子的爹妈里了,这个不算进来
5、再往前的月份生的兔崽子和爹妈都已经包含在2、3里了
这个月生的兔崽子数=上个月生兔崽子的爹妈数+上上个月生的兔崽子数
而上个月生兔崽子的爹妈数=上个月生的兔崽子数
所以,这个月生的兔崽子数=上个月生的兔崽子数+上上个月生的兔崽子数
其实这个就是斐波纳契数列(Fibonacci Sequence),又称黄金分割数列。
虽然这是一个完全是自然数的数列,但是通项公式却是用无理数来表达的,所以这道题不能用通项公式计算的方法来解。
用递推最好,用递归也可以。
关于递归,这个数列的增长速度还是很快的,unsigned int的情况可以承受,如果是超大整数(比如用数组、链表之类表示的)就要用递推了。

 

相关文章推荐

备孕、怀孕、产子、月子知识大全

一.提高卵子质量的食疗法。  1、黑豆(补充雌激素)  时间:月经干净后连吃6天黑豆。  做法:将若干黑豆用清水浸泡12小时左右,然后用清水煮至熟透,可少放一点盐。从月经结束后第—天起,每天吃4...

上海代孕产子价格

 上海添禧代孕公司全国统一咨询热线:18201880788 QQ407007000 微信:ivf9999  超高的成功率  成功率是最关键的一个问题那么为什么上海添禧代孕成功率比较高呢?首...
  • ivf9999
  • ivf9999
  • 2015年01月11日 15:43
  • 3

兔子增长序列(第1届第3题)

区别于以前简单的兔子繁殖序列,但仍然是斐波那契数列的变体。

超级兔子子

  • 2007年05月17日 19:14
  • 10.33MB
  • 下载

兔子-蓝牙 bluetooth (四)OPP文件传输

在前面android -- 蓝牙 bluetooth (一) 入门文章结尾中提到了会按四个方面来写这系列的文章,前面已写了蓝牙打开和蓝牙搜索,这次一起来看下蓝牙文件分享的流程,也就是蓝牙应用opp...

[编程题]统计每个月兔子的总数

有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?...

MFC,点ListControl控件列头可排序列子

  • 2014年06月05日 16:13
  • 31.64MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:兔子产子与fibanacii序列
举报原因:
原因补充:

(最多只允许输入30个字)