Mortal Fibonacci Rabbitsを数えてみました。このタスクは、ウサギが一定の月数後に死亡することを前提としています。
写真はウサギの数の経時変化ですうさぎ
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)