zoukankan      html  css  js  c++  java
  • 斐波那契数列实现

    斐波那契数列实现

    for循环

    var fibona = function (n) {
      var num1 = 1
      var num2 = 1
      var num3 = 0
      for (var i = 3; i <= n; i++) { // 第三个数开始求和, 求到n
        num3 = num1 + num2
        num1 = num2
        num2 = num3
      }
      return num3
    }
    

    递归

    var fibona = function (n) { // 递归调用函数
      if (n === 1 || n == 0) {
        return n
      }
      return fibona(n - 1) + fibona(n - 2)
    }
    

    闭包缓存

    var fibona = (function () {
      var temp = [] // {} 对象快过数组. 因为数组第一次赋值的时候, 会将数组的前面都置为undefined
      return function (n) {
        if (temp[n]) { // 缓存数组, 减少调用次数
          return temp[n]
        } else {
          return temp[n] = (n === 0 || n === 1) ? n : fibona(n - 1) + fibona(n - 2)
        }
      }
    })()
    

    递归尾调用

    function fibona(n, n1 = 1, n2 = 1) {
      if (n <= 2) {
        return n2
      }
      return fibona(n - 1, n2, n1 + n2)
    }
    
  • 相关阅读:
    装饰器和表达生成式
    函数
    字符编码
    函数基础
    列表,字典与集合
    Linux Semaphore
    tp5安装easyWeChat
    wx.request
    小程序设计规范
    小程序的概念和特点
  • 原文地址:https://www.cnblogs.com/zhangrunhao/p/9202818.html
Copyright © 2011-2022 走看看