美文网首页
斐波那契数列

斐波那契数列

作者: 无酒之人 | 来源:发表于2018-09-29 17:55 被阅读0次
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <script>
            let fbnqSave = {};
            function fbnq (i,x) {
                // body... 
                function inner(x){
                    if(x<=0){
                        console.log('输入错误!')
                        return;
                    }
                    if(x===1||x===2){
                        return 1;
                    }else{
                        if(fbnqSave[x]){
                            return fbnqSave[x];
                        }
                        return inner(x-1)+inner(x-2);
                    }
                }
                var res = inner(x);
                if(i === x){
                    console.time('log')
                }
                fbnqSave[x] = res;
            }
            function fbnqsl(i){
                console.timeEnd('log')
                for(var k = 1; k <= i; k++){
                    fbnq(i,k);      
                }
            }
        </script>
    </body>
    </html>
    

    用递归的方法计算斐波那契数列,一旦输入的数值太大,那么递归算法时间就会非常长,导致超过60之后几乎无法计算。时间复杂度呈指数增长。
    但可以利用缓存来优化计算,上述代码可以极大的提高计算效率。计算入口在fbnasl()函数上。
    PS:利用迭代也很简单,此题旨在研究缓存的重要性

    相关文章

      网友评论

          本文标题:斐波那契数列

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