P粉0989790482023-08-17 16:52:41
有一個用來計算第n個斐波那契數的封閉公式,稱為Binet公式。這使您可以在O(1)
的漸近時間複雜度內獲得第n個數。
下面是一個範例,展示如何計算任意n
的斐波那契數。
將此擴展以解決您的特定問題。我建議計算n-1
和n
的值。然後迭代k次以獲得所需的值。在進行迭代時追蹤結果,您應該沒問題。
function fibonacci(n) { const phi = (1 + Math.sqrt(5)) / 2; const psi = (1 - Math.sqrt(5)) / 2; // phi的负倒数 return Math.round((Math.pow(phi, n) - Math.pow(psi, n)) / Math.sqrt(5)); } // 测试 console.log(fibonacci(10)); // 输出:55
注意:儘管此公式對於較小的n
值給出精確結果,但由於JavaScript中浮點運算的限制,對於較大的值可能會失去精度。