zoukankan      html  css  js  c++  java
  • js函数记忆

    实现一个常见的斐波那契函数:

    var fibonacci = function(n){
        return n<2 ? n : fibonacci(n-1) + fibonacci(n-2);
    };

    然而,在我们实际计算时,做了很多无谓的工作,例如计算fibonacci(10)时,函数实际上被调用了177次!浪费了很多时间,如果我们能把之前计算得到的结果储存起来,便可以减少很多计算量。我们先声明一个memb数组用于储存数据,每次要计算时先查询数组里面是否有改值,如果有的话则直接调用,否则再计算。

    var fibonacci = function(){
        var memb = [0,1];
        var fib = function(n){
            var result = memb[n];
            if(typeof memb[n] !== 'number'){
                var result = fib(n-1) + fib(n-2);
                memb[n] = result;
            }
            return result;
        };
        return fib;
    }();

    经过这样处理后,计算fibonacci(10)时函数实际上只调用了19次。

  • 相关阅读:
    用python将博客园的文章爬取到本地
    2016.7.9
    2016.7.8
    2016.7.7
    2016.7.5
    2016.7.4
    2016.7.3
    2016.7.2
    2016.6.28
    2016.6.27
  • 原文地址:https://www.cnblogs.com/liuhanz/p/4797757.html
Copyright © 2011-2022 走看看