古典问题-兔子-斐波那契数列
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问某个月的兔子总数为多少?
前言
网上所有的编程解法基本都是围绕斐波那契数列进行的递归解法,但是拿到这个题目,并没有推导的情况下,怎么能编写出递归解呢,所以我按照题目的定义进行初步分析并实现。
分析
分析题目,可以分为三个类兔子,1、一个月的兔子,2、两个月的兔子,3、三个月及以上的兔子,数量都为对。根据题目,不难分析,时间每隔一个月,一个月的兔子会变成两个月的兔子;两个月的兔子会变成三个月的兔子并诞生一对一个月的兔子;三个月及以上的兔子会诞生一对一个月的兔子。设一个月的兔子数量为a,两个月的兔子数量为b,三个月及以上的兔子数量为c,那么每过一个月,变化为c=c+b;b=a;a=c;解释一下:首先计算三个月及以上的兔子数量为上个月的三个月及以上的兔子数量加上上个月的两个月的兔子数量;其次计算两个月的兔子数量为上个月的一个月的兔子数量;最后计算一个月的兔子数量为上个月的三个月及以上的兔子数量加上上个月的两个月的兔子数量也就是当前月的三个月及以上的兔子数量。
编码
java实现
public