Fibonacci数列是一个经典的数学序列,其中每个数字是前两个数字的和。数列的前几个数字是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
Fibonacci数列的定义如下:
function fibonacciRecursive(n) {
if (n <= 1) return n;
return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2);
}
function fibonacciIterative(n) {
let a = 0, b = 1, c;
if (n === 0) return a;
for (let i = 2; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
return b;
}
function fibonacciDynamic(n) {
let fib = [0, 1];
for (let i = 2; i <= n; i++) {
fib[i] = fib[i - 1] + fib[i - 2];
}
return fib[n];
}
原因:递归方法会重复计算很多子问题,导致时间复杂度为O(2^n)。 解决方法:使用迭代或动态规划方法,避免重复计算。
原因:JavaScript中的Number类型在处理非常大的整数时可能会失去精度。 解决方法:使用BigInt类型来处理大数。
function fibonacciBigInt(n) {
let a = BigInt(0), b = BigInt(1);
for (let i = 2; i <= n; i++) {
let c = a + b;
a = b;
b = c;
}
return b;
}
通过这些方法,可以有效地计算Fibonacci数列,并解决常见的实现问题。
领取专属 10元无门槛券
手把手带您无忧上云