美文网首页
[算法] - 不使用递归,实现斐波那契数列

[算法] - 不使用递归,实现斐波那契数列

作者: JackN81 | 来源:发表于2021-04-19 16:17 被阅读0次

    https://jackniu81.github.io/2021/04/18/Algorithm-Fibonacci-numbers/

    1. 斐波那契数列

    斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13 ... ...

    通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。

    F(0) = 0,F(1) = 1
    F(n) = F(n - 1) + F(n - 2),其中 n > 1
    

    敏捷开发时,我们估算Story Point,通常就是使用斐波那契数列。

    2. 解题思路

    2.1. 递归

    F(n) = F(n - 1) + F(n - 2), 很简单,就不谈了。

    2.2. 动态规划

    动态规划的思想是,记录中间计算结果,计算后面相时,根据前面保存的结果直接计算,避免重复计算。

    3. Javascript 实现

    /**
     * @param {number} n
     * @return {number}
     */
    var fib = function(n) {
        if(n===0)
            return 0;
        if(n===1)
            return 1;
    
        let arr = [0,1]
        for(let i=2;i<=n;i++){
            arr[i] = arr[i-1] + arr[i-2];
        }
        return arr[n];
    };
    

    还可以进一步优化,当前使用数组记录以及计算过的F(n),由于F(n) = F(n - 1) + F(n - 2),实际只需要记录最近的2个值即可,不需要使用数组记录全部数据。

    相关文章

      网友评论

          本文标题:[算法] - 不使用递归,实现斐波那契数列

          本文链接:https://www.haomeiwen.com/subject/zbnilltx.html