有这样一个题目:已知一对兔子每一个月可以生一对小兔子,而一对兔子出生后第三个月开始生小兔子假如一年内没有发生死亡,则一对兔子一年内能繁殖成多少对?
之前有人做过,我却怎么想都不明白,今天自己终于想出了方法,唉,这算是我的逻辑觉醒吗?
方法1:
1 | var arr=new Array(12); |
这种方法其实不是正常的逻辑,我们知道,斐波那契数列的特征是:f(n)=f(n-1)+f(n-2),按照我的正常逻辑:当月的兔子数=当前月前一个月的兔子数+前一个月可以生育的兔子生下来的兔子数,而我在上面是这样计算的:当月的兔子数=刚开始的1对+1月到当月前一个月所有会生下的兔子数
最后的结果是正确的
方法2:
1 | function createRabbit (birth) { |
此方法就实现了正常的逻辑,注意里面对象的赋值,区分什么时候该新创建对象,因为对象的值在堆里,改动任何一个该对象的引用都会改变该对象的值


