兔子产子与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的情况可以承受,如果是超大整数(比如用数组、链表之类表示的)就要用递推了。

 

兔子产子

 //从前有一对长寿的兔子,他们每个月生出一对小兔子, //第一个月新生产的兔子两个月就长大了,在第三个月初开始生 //他们的下一代小兔子,这样一代一代的生下去,不考虑兔子 //的寿命,求...
  • abc5382334
  • abc5382334
  • 2014年02月28日 15:05
  • 4231

递推:兔子产子

递推: 解决思路: 找到数学规律,通过公式计算到下一项的值,一直到我们要的结果为止, 例如:兔子产子:通过前两项得到下一项  /*  一般而言:兔子在出生两个月后,就要繁殖能力  一对兔子...
  • qq_39430589
  • qq_39430589
  • 2017年08月08日 08:52
  • 220

百练 3258 兔子产子

# include int main() { int str[20]; int n,i,j,m; scanf("%d",&m); for(j=0;j
  • Gnipuohz
  • Gnipuohz
  • 2013年09月14日 19:55
  • 708

兔子产子问题

有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第三个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?看图找规律#include int main() ...
  • u013593035
  • u013593035
  • 2015年07月28日 11:24
  • 349

百练_3258:兔子产子

描述 从前有一对长寿兔子,它们每一个月生一对兔子,新生的小兔子两个月就长大了,在第二个月的月底开始生它们的下一代小兔子,这样一代一代生下去,求解兔子增长数量的数列。 输入 第1行是测试数据的组数n,后...
  • m0_37243410
  • m0_37243410
  • 2017年08月05日 01:01
  • 117

趣味程序(兔子产子)

/**************************************** * File Name : interest.c * Creat Data : 2015.1.31 * ...
  • qaz3171210
  • qaz3171210
  • 2015年01月31日 01:08
  • 320

兔子产子问题(斐波那契数列)

package coding;import java.util.Scanner;/* * 兔子产子问题 * fibonacci数列求解 */ public class cha03_rabbitS...
  • kaishihaohaozuoshi
  • kaishihaohaozuoshi
  • 2017年01月07日 09:27
  • 117

递归:斐波那契数列(兔子总数)。

反复学习反复学习。 因为自己对递归还是不太熟练,于是做POJ1753的时候就很吃力,就是翻棋子直到棋盘上所有棋子的颜色一样为止,求最少翻多少次,方法是枚举递归。然后就打算先做另一道递归的题(从数组中...
  • Vit_rose
  • Vit_rose
  • 2016年05月11日 11:05
  • 3871

兔子产子——斐波那契(Fibonacci)数列

兔子产子——斐波那契(Fibonacci)数列 描述 从前有一对长寿兔子,它们每一个月生一对兔子,新生的小兔子两个月就长大了,在第二个月的月底开始生它们的下一代小兔子,这样一代一代生下去,求解兔子...
  • WLsuccess8
  • WLsuccess8
  • 2011年11月20日 22:14
  • 826

openjudge 兔子与星空(最小生成树)

兔子与星空 查看提交统计提问 总时间限制: 1000ms 内存限制: 10000kB 描述 很久很久以前,森林里住着一群兔子。兔子们无聊的时候就喜欢研究星座...
  • qq_27601815
  • qq_27601815
  • 2017年09月01日 16:53
  • 229
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:兔子产子与fibanacii序列
举报原因:
原因补充:

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