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中浮点运算的限制,对于较大的值可能会失去精度。