zoukankan      html  css  js  c++  java
  • js计算斐波那契数列

     
    /**
     * 要求:使用js计算斐波那契数列,时间复杂度尽量低。输入数字n,输出数列内第n位的值
     * 
     * 斐波那契数列如下:
     * 1、2、3、5、8、13、21、34、
     * 
     * 结果验证:
     * 输入8、输出34
     * 输入10、输出89
     * 输入20、输出10946
     */

    // 无缓存版本
    var calFibonacci = function(n) {
      // 迭代次数统计
      var count = 0;
      function _calFibonacci(n) {
        // 迭代次数统计
        count++;
        if (n === 1) return 1;
        if (n === 2) return 2;

        return _calFibonacci(n-1) + _calFibonacci(n-2);
      }
      var result =  _calFibonacci(n);
      // 输出迭代次数统计
      console.log(count);
      return result;
    };

    /**
     * 讨论:
     *  递归有什么优点和缺点?
     */


    // 缓存版本
    var calFibonacci = function(n) {
      var cache = {};
      // 迭代次数统计
      // var count = 0;
      function _calFibonacci(n) {
        // 迭代次数统计
        // count++;
        if (n === 1) return 1;
        if (n === 2) return 2;

        var first;
        if (cache[n-1]) {
          first = cache[n-1];
        } else {
          first = _calFibonacci(n-1);
          cache[n-1] = first;
        }
        
        var second;
        if (cache[n-2]) {
          second = cache[n-2];
        } else {
          second = _calFibonacci(n-2);
          cache[n-2] = second;
        }

        return first + second;
      }
      var result =  _calFibonacci(n);
      // 输出迭代次数统计
      // console.log(count);
      return result;
    };

    console.log(calFibonacci(20));
  • 相关阅读:
    win10 uwp 弹起键盘不隐藏界面元素
    win10 uwp 存放网络图片到本地
    win10 uwp 存放网络图片到本地
    sublime Text 正则替换
    sublime Text 正则替换
    win10 uwp 绘图 Line 控件使用
    win10 uwp 绘图 Line 控件使用
    AJAX 是什么?
    什么是 PHP SimpleXML?
    PHP XML DOM:DOM 是什么?
  • 原文地址:https://www.cnblogs.com/chuanzi/p/12005918.html
Copyright © 2011-2022 走看看