美文网首页
动态规划

动态规划

作者: Creator93 | 来源:发表于2018-03-21 23:14 被阅读0次
    动态规划解决方案从底部开始解决问题, 将所有小问题解决掉, 然后合并成一个整体解决方案, 从而解决掉整个大问题 。

    斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........

    这个数列从第3项开始,每一项都等于前两项之和。

    function recurFib(n){
            if(n<2){
                return n;
            }else{
                //document.write("第"+(n-1)+"次计算&nbsp;n-1="+(n-1)+recurFib(n-1)+'&nbsp;&nbsp;&nbsp;');
                // document.write("n-2="+(n-2)+recurFib(n-2)+"<br>");
                return recurFib(n-1)+recurFib(n-2);
            }
        }
    

    动态规划
    通过数组 val 中保存了中间结果, 如果要计算的斐波那契数是 1 或者 2, 那么 if 语句会返回 1。 否则,数值 1 和 2 将被保存在 val 数组中 1 和 2 的位置。

    循环将会从 3 到输入的参数之间进行遍历, 将数组的每个元素赋值为前两个元素之和, 循环结束, 数组的最后一个元素值即为最终计算得到的斐波那契数值, 这个数值也将作为函数的返回值

     function dynFib(n){
                let val = [];
                for(let i = 0;i<=n,i++){
                    val[i] = 0;
                }
                if(n == 1 || n==2){
                    return 1;
                }else{
                    val[1] = 1;
                    val[2] = 2;
                    for(let i = 3;i<=n;i++){
                        val[i] = val[i-1]+val[i-2];
                    }
                }
                return val[n];
            }
    

    相关文章

      网友评论

          本文标题:动态规划

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