首页 经验

js斐波那契数列

时间: 2024-11-06 09:47:12

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)

在 JavaScript 中,生成斐波那契数列可以通过多种方法实现。下面,我将向你展示几种常见的实现方式,包括递归、迭代和动态规划。


1. 递归实现


递归是一种简单而直观的方法,但对于较大的 n 值,效率较低,因为它重复计算了许多子问题。


javascript

function fibonacciRecursive(n) {

    if (n <= 0) return 0;

    if (n === 1) return 1;

    return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2);

}


// 使用例子

console.log(fibonacciRecursive(10)); // 输出: 55


2. 迭代实现


使用循环迭代可以有效地计算斐波那契数列,避免了递归中的重复计算。


javascript

function fibonacciIterative(n) {

    if (n <= 0) return 0;

    if (n === 1) return 1;


    let a = 0, b = 1, c;

    for (let i = 2; i <= n; i++) {

        c = a + b; // 计算当前斐波那契数

        a = b;     // 更新 a 为上一个值

        b = c;     // 更新 b 为当前值

    }

    return b; // 返回第 n 个斐波那契数

}


// 使用例子

console.log(fibonacciIterative(10)); // 输出: 55


3. 动态规划实现


这种方法使用数组来存储已经计算的值,从而避免重复计算,提高效率。


javascript

function fibonacciDynamic(n) {

    if (n <= 0) return 0;

    if (n === 1) return 1;


    const fib = [0, 1];

    for (let i = 2; i <= n; i++) {

        fib[i] = fib[i - 1] + fib[i - 2];

    }

    return fib[n];

}


// 使用例子

console.log(fibonacciDynamic(10)); // 输出: 55


4. 优化迭代实现


在计算斐波那契数时,可以只保留上两个值,从而节省空间复杂度。


javascript

function fibonacciOptimized(n) {

    if (n <= 0) return 0;

    if (n === 1) return 1;


    let a = 0, b = 1, temp;

    for (let i = 2; i <= n; i++) {

        temp = a + b; // 计算当前斐波那契数

        a = b;        // 更新 a 为上一个值

        b = temp;     // 更新 b 为当前值

    }

    return b; // 返回第 n 个斐波那契数

}


// 使用例子

console.log(fibonacciOptimized(10)); // 输出: 55


总结


以上是四种在 JavaScript 中生成斐波那契数列的方法。对于小的 n 值,递归实现比较直观,但对于大的 n 值,推荐使用迭代或动态规划的方法,因为它们具有更高的效率。根据不同需求,你可以选择最合适的方法。


上一个 一本深入探讨策略与计谋的书籍 比较 文章列表 下一个 js阶乘

最新

工具

© 2019-至今 适观科技

沪ICP备17002269号