美文网首页
JS:菲波那切数列--普通方式+数组缓存形式

JS:菲波那切数列--普通方式+数组缓存形式

作者: R_X | 来源:发表于2018-06-14 18:21 被阅读0次

    普通方式:每个前置的数值都会被重复计算很多次
    数组缓存方式:前置的数值如果计算了,就存在数组中,用的时候直接拿出来就行了

    # 普通方式
    function fib1(n) {
      var result;
      if (n <=1 ) {
        return 1;
      } else {
        result = fib1(n - 1) + fib1(n - 2)
      }
      return result;
    }
    console.time("fib1--普通的:")
    console.log("fib1--普通的:", fib1(41))
    console.timeEnd("fib1--普通的:");
    
    # 数组缓存形式
    var a = [];
    console.time("fib2--内存缓存的:");
    console.log('fib2--内存缓存的:', fib2(41));
    console.timeEnd("fib2--内存缓存的:");
    
    function fib2(n) {
      var result;
      for (var i = 0; i <= n; i++) {
        i === n ? (result = _fib2(n)) : _fib2(n);
      }
      return result;
    }
    function _fib2 (n) {
      if (a[n]) {
        return a[n];
      }
      var result;
      if (n <= 1 ) {
        return 1;
      } else {
        result = _fib2(n - 1) + _fib2(n - 2)
      }
      a[n] = result;
      return result;
    }
    

    相关文章

      网友评论

          本文标题:JS:菲波那切数列--普通方式+数组缓存形式

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