我试着数一数凡人斐波那契兔子。该任务假设兔子在固定的几个月后死亡。
图为兔子的数量如何随时间变化的兔子
Mortal Rabbits 的斐波那契数列如下所示:
{1,1,2,2,3,4,5,7,9,12,16,21,28 (...)}
我的代码很简单 - 不幸的是只计到 6(含)。
function rabbits(n){
if (n<=2){
return 1
}
else if (n===3 || n===4){
return 2
}
else {
f1 = 1
f2 = 1
f3 = 2
f4 = 2
for (i = 5; i <= n; i++) {
f = f2 + f3
f3 = f2
f2 = f
}
return f
}
}
console.log(rabbits(1)) // 1
console.log(rabbits(2)) //1
console.log(rabbits(3)) // 2
console.log(rabbits(4)) //2
console.log(rabbits(5)) //3
console.log(rabbits(6)) //4
console.log(rabbits(7)) //7
console.log(rabbits(8)) //11
console.log(rabbits(9)) //18
console.log(rabbits(10)) //29
从 7 开始 - 而不是 F (n-2) + F (n-3) - 计数 F (n-1) + (F (n-2)。
我不知道为什么会这样。错误在哪里?
我刚刚开始用 JS 冒险,我担心复杂的代码我无法理解(什么和为什么) - 所以我寻求建议/帮助修改现有的代码,以便初学者理解。
编辑//
好的,问题解决了。这是一个工作代码:
var Fib=[]
for(i=1;i<=n;i++){
if(i===1||i===2){
Fib.push(1)
}
else if(i===3|| i===4){
Fib.push(2)
}
else{
fib=Fib[Fib.length-2]+Fib[Fib.length-3]
Fib.push(fib)
}
}
console.log(Fib)