美文网首页
算法学习--斐波那契算法

算法学习--斐波那契算法

作者: 夏日清风_期待 | 来源:发表于2019-09-25 14:17 被阅读0次
    什么是斐波那契查找
    image

    斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、····,在数学上,斐波那契被递归方法如下定义:F(1)=1,F(2)=1,F(n)=f(n-1)+F(n-2) (n>=2)。规律也比较好找。

    上代码:

    /**
         * [fib description]斐波那契算法1(递归方法) -- 调用(n-1)和(n-2)两个数相加得到结果,但是不能计算过大的数值,否则会卡死
         * @param  {[type]} n [description]
         * @return {[type]}   [description]
         */
        function fib1(n){
            let result = n <= 1 ?  n : fib1(n-1) + fib1(n-2);
            return result;
        }
        console.log('fib1-- ',fib1(40));
    
        /**
         * [fib2 description]斐波那契算法2(循环)-- 只需要弄清楚需要循环的次数(n-1),然后计算result,再重新给first和second赋值计算下一次result,直到循环结束。此方法可以计算大数值的值,且计算速度飞快(ps:写法还有优化空间)。
         * @param  {[type]} n [description]
         * @return {[type]}   [description]
         */
        function fib2(n){
            if(n <= 1)return n;
            let first = 0;
            let second = 1;
            for(let i = 0;i < n - 1;i++){
                let result = first + second;
                first = second;
                second = result;
            }
            return second;
        }
        console.log('fib2-- ',fib2(100));
    
    计算结果

    相关文章

      网友评论

          本文标题:算法学习--斐波那契算法

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