📜  斐波那契 javascript (1)

📅  最后修改于: 2023-12-03 14:55:03.372000             🧑  作者: Mango

斐波那契数列介绍

斐波那契数列是一个经典的数列,在数学和计算机科学领域都非常重要。它的定义如下:每个数字是前两个数字之和,首两个数字为0和1。数列的前几个数字为:0, 1, 1, 2, 3, 5, 8, 13, 21, ...

递归实现

JavaScript中,可以通过递归来实现斐波那契数列的计算。下面是一个简单的递归实现:

function fibonacci(n) {
  if (n <= 1) {
    return n;
  }
  
  return fibonacci(n - 1) + fibonacci(n - 2);
}

该函数接受一个参数n,代表要计算的斐波那契数列的第n个数字。如果n小于等于1,则直接返回n;否则,通过递归调用计算第n个数字。

该实现简单直观,但是效率较低,特别是当n较大时,会出现重复计算的情况。

动态规划实现

为了提高效率,可以使用动态规划的方式计算斐波那契数列。动态规划会利用已计算的结果来避免重复计算。下面是使用动态规划实现的代码:

function fibonacci(n) {
  var fib = [];
  fib[0] = 0;
  fib[1] = 1;
  
  for (var i = 2; i <= n; i++) {
    fib[i] = fib[i - 1] + fib[i - 2];
  }
  
  return fib[n];
}

该实现使用一个数组fib来存储已计算的结果,避免了重复计算。通过循环从2开始计算每个数字,并将其存储到数组中。最后返回第n个数字,即为斐波那契数列的结果。

测试示例

以下是对上述两种实现进行测试的示例代码:

console.log(fibonacci(0));   // 输出: 0
console.log(fibonacci(1));   // 输出: 1
console.log(fibonacci(5));   // 输出: 5
console.log(fibonacci(10));  // 输出: 55
console.log(fibonacci(20));  // 输出: 6765

以上代码会输出对应的斐波那契数列的结果。你可以根据需要进行自定义测试。

总结

斐波那契数列是一个经典的数列,可以使用递归或动态规划两种方式来计算。递归实现简单直观,但效率较低;动态规划利用已计算的结果避免了重复计算,效率更高。你可以根据实际应用场景选择合适的实现方式。