zoukankan      html  css  js  c++  java
  • Javascript之递归求裴波那契数

    一、遍历的方式性能更加,递归的方式代码利于阅读、简短,性能略差

    二、裴波那契数定义:

        · 位置0的裴波那契数为0

        · 1和2的裴波那契数为1

        · n(n > 2)裴波那契数为 (n-1)的裴波那契数 + (n-2)裴波那契数

    三、遍历的方式

    fibonacciIterative (n) {
          if (n < 1) {
            return 0
          }
          if (n <= 2) {
            return 1
          }
          let fibNMinus2 = 0
          let fibNMinus1 = 1
    
          let fibN = n
    
          for (let i = 2; i <= n; i++) {
            fibN = fibNMinus1 + fibNMinus2
            // 更新上一次的裴波那契数(n - 2)
            fibNMinus2 = fibNMinus1
            // 记录当前的裴波那契数(n - 1)
            fibNMinus1 = fibN
          }
    
          return fibN
        }
    
    console.log(fibonacciIterative(10) // 55
    四、递归的方式
    
    function fn(n) {
        const memo = [0, 1]
    
        function _fn(n) {
            if(memo[n] !== undefined){
                return memo[n]
            }
    
            const result = _fn(n - 2) + _fn(n - 1)
            memo[n] = result
            return memo[n]
        }
    
        return _fn(n)
    }
    
    console.log(fn(10)) // 55
      /* 解析
        _fn(n - 1) // n的值 -> 9、8、7、6、5、4、3、2,首次的值为 memo[1] -> 1
        _fn(n - 2) // n的值为v1 n的值的反转,首次的值为 memo[0] -> 0
        memo[n] = result // v1 + v2 // 首次为 1 + 0 -> memo[2] = 1
        return memo[n]
    
      */
    console.log(fn1(10)) // 55
    

      

      欢迎访问博客站:http://www.devloper.top/article/detail/0efbec70-34b8-11eb-8b91-7b988df38548

    -- 希望,只有和勤奋作伴,才能如虎添翼 --

  • 相关阅读:
    |,&,<<,>>运算符
    Unity 异步加载场景
    string字母排序,
    冒泡算法
    Direct3D 12 编程---(1)
    点云密度粗估计
    git工具使用
    opencv---灰度图像与彩色图像遍历
    求平面两直线的交点,两直线段的交点
    结构体重载运算符
  • 原文地址:https://www.cnblogs.com/jingxuan-li/p/14077337.html
Copyright © 2011-2022 走看看