`

兔子繁殖问题

阅读更多

某日到某公司笔试~遇到以下算法题目,顿时蒙了,冥思苦想不得其解,只怪当时数据结构与算法这门课没好好学,现在真是狼狈。

归来,上百度一搜,原来是一道Fibonacci 问题,真无奈,为什么学过Fibonacci却不知道兔子繁殖问题呢?真是可笑~~学习不彻底惹的祸,不过吃一堑长一智,现将问题及答案记录下来:

 

1,1,2,3,5,8,13,21。。。
称为裴波那契数列有许多神奇也叫兔子数列
神奇一、一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?
  我们不妨拿新出生的一对小兔子分析一下:
  第一个月小兔子没有繁殖能力,所以还是一对;
  两个月后,生下一对小兔民数共有两对;
  三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对;
  ------
  依次类推珂以列出下表:
  所经过月数:0123456789101112
  兔子对数:1 1 2 3 5 8 13 21 34 55 89 144 233
  表中数字1,1,2,3,5,8---构成了一个序列。这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。
神奇二、有一楼梯共10级,一人每一步要跨一级也可跨二级,某人从第一级走到第十级共有几种不同的走法?

想一下这也可以用裴波那契数
程序大概是这样写的:
class Rabit 
{ 
public static int caclulate(int m) //通过递归来计算 
{ 
if (m <= 2) 
{ 
return 1; 
} else
return caclulate(m-1) + caclulate(m-2); 
} 

public static void main(String[] args) 
{ 
for(int i=1; i<=12; ++i) 
System.out.println("第" + i + "月:" + Rabit.caclulate(i)); 
} 
} 
 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics