0

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)
4

1 に答える 1