斐波那契数列(Fibonacci Sequence)是由意大利数学家斐波那契提出的一个数列,其特点是数列中的每一项都是前两项的和,通常以0和1作为起始项。数学定义如下:
斐波那契数列广泛应用于计算机科学、数学、自然界等多个领域。在编程中,实现斐波那契数列的方法有多种,常见的有递归、迭代和动态规划等。
以下是使用JavaScript实现斐波那契数列的几种方法:
function fibonacciRecursive(n) {
if (n < 0) throw new Error("输入必须是非负整数");
if (n === 0) return 0;
if (n === 1) return 1;
return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2);
}
// 示例
console.log(fibonacciRecursive(10)); // 输出 55
优点:
缺点:
function fibonacciIterative(n) {
if (n < 0) throw new Error("输入必须是非负整数");
let a = 0, b = 1, temp;
for (let i = 2; i <= n; i++) {
temp = a + b;
a = b;
b = temp;
}
return n === 0 ? a : b;
}
// 示例
console.log(fibonacciIterative(10)); // 输出 55
优点:
function fibonacciDP(n, memo = {}) {
if (n < 0) throw new Error("输入必须是非负整数");
if (n === 0) return 0;
if (n === 1) return 1;
if (memo[n]) return memo[n];
memo[n] = fibonacciDP(n - 1, memo) + fibonacciDP(n - 2, memo);
return memo[n];
}
// 示例
console.log(fibonacciDP(10)); // 输出 55
优点:
问题:递归方法在计算较大n值时效率低下,甚至导致栈溢出。
原因:
解决方法:
示例:通过迭代方法解决效率问题,如上文所示的fibonacciIterative
函数。
斐波那契数列在编程中有多种实现方式,选择合适的方法取决于具体的应用场景和需求。对于教学和小规模计算,递归方法简洁易懂;而对于实际应用中的大规模计算,迭代或动态规划方法更为高效。
领取专属 10元无门槛券
手把手带您无忧上云