某日到某公司笔试~遇到以下算法题目,顿时蒙了,冥思苦想不得其解,只怪当时数据结构与算法这门课没好好学,现在真是狼狈。
归来,上百度一搜,原来是一道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));
}
}
分享到:
相关推荐
兔子繁殖问题
兔子繁殖问题
兔子繁殖问题 def calculate_rabbit_pairs(months): if months == 1 or months == 2: return 1 else: rabbits = [1, 1] for i in range(2, months): rabbits.append(rabbits[i-1] + rabbits[i-2]) return ...
斐波那契数列指-兔子繁殖问题。设有一对新生的兔子,从第三个月开始他们每个月都生一对兔子,新生的兔子从第三个月开始又每个月生一对兔子。按此规律,并假定兔子没有死亡,20个月后共有多少个兔子
兔子繁殖问题.py
c 语言 兔子繁殖问题
本题使用C思想进行斐波那契数列的输出,可帮助同学的作业提交问题。
兔子繁殖问题python 兔子繁殖问题是一个经典的递归问题,也称为斐波那契数列。问题描述如下:一对兔子从出生后的第三个月开始,每个月都会生一对兔子,新生的兔子从第三个月开始也会每个月生一对兔子。假设兔子不死...
(新课标)2015年高考数学 题型全归纳 兔子繁殖问题与斐波那契
兔子繁衍问题c语言
兔子繁衍问题c语言
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
# 问题:假设条件,兔子都不死的情况下,问每个月的兔子总数为多少? def rabbit(month): if month<=2: return 2 else: return rabbit(month-1)+rabbit(month-2) if __name__==__main__: month=int(raw_...
斐波拉契题目(生小兔子题目) 一对兔子,一个月生一对兔子,兔子两个月后长大,又能生兔子
兔子繁衍问题.c
数学建模 是解决数学实际模型的事情 很好的哦 大家给力啊
兔子繁殖问题 昆虫繁殖 Hanoi塔问题 平面分割问题 杨辉三角 Catalan数 实数数列 贮油点 方格取数
ACM 鸡兔同笼 ACM 鸡兔同笼 ACM 鸡兔同笼 ACM 鸡兔同笼 ACM 鸡兔同笼 ACM 鸡兔同笼
入门级C&C++利用菜单对百鸡百钱、鸡兔同笼和斐波那契问题进行多次计算。 菜单部分借鉴《程序设计基础及应用(C&C++语言)》例题,有部分改动和优化
青蛙上台阶所有解 兔子繁殖问题 斐波那契数列