zoukankan      html  css  js  c++  java
  • 裴波那契数列

    斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

    求斐波那契数列第 n 项的值:

    方法一:递归

    function fibonacci(n) {
      if (!Number.isSafeInteger(n) || n < 0) {
        return;
      }
    
      if (n === 0 || n === 1) {
        return n;
      } else {
        return fibonacci(n - 1) + fibonacci(n - 2);
      }
    }
    

    方法二:循环

    function fibonacci(n) {
      if (!Number.isSafeInteger(n) || n < 0) {
        return;
      }
    
      if (n === 0) {
        return n;
      }
    
      var item1 = 1, item2 = 1, sum = 0;
    
      for (var i = 1; i < n; i++) {
        sum = item1 + item2;
        item1 = item2;
        item2 = sum;
      }
    
      return item1;
    }
    

    用 Memoization 函数优化计算:

    function memoization(func) { // Memoization 用于优化比较耗时的计算,通过将计算结果缓存到内存中,这样对于同样的输入值,下次只需要中内存中读取结果
      var cache = {};
    
      return function() {
        var key = arguments[0];
    
        if (cache[key]) {
          return cache[key];
        } else {
          var val = func.apply(this, arguments);
          cache[key] = val;
          return val;
        }
      };
    }
    
    var fibonacci = memoization(function(n) {
      return (n === 0 || n === 1) ? n : fibonacci(n - 1) + fibonacci(n - 2);
    });
    

      

  • 相关阅读:
    python转换emoji字符串
    python位运算符详细介绍
    python制作动态排序图
    docker安装mysql
    yum安装centos-7版nginx
    pysimplegui模块实现倒计时UI框
    pysimplegui模块实现进度条
    python枚举的应用enum
    第0-0课
    SV -- Array 数组
  • 原文地址:https://www.cnblogs.com/caihg/p/9640277.html
Copyright © 2011-2022 走看看