• 递归函数---案例:求第100个斐波那契数


    // 斐波那契数列 1  1  2  3  5  8  13  21  34  55  ...
        // 规律:从第三个数开始,后一个数等于前两个数的和
        //      getFib(n) = getFib(n-1) + getFib(n-2)
        
        // 需求:求第100个斐波那契数
    
        // 方法一
        var arr = []
        function getFib(n) {
          if (n === 1 || n === 2) {
            return 1
          }
          if (arr[n]) {
            return arr[n]
          } else {
            arr[n] = getFib(n - 1) + getFib(n - 2);
            return arr[n]
          }
        }
        console.log(getFib(100));
    
    
        // 方法二:利用递归
        function outer(){
          var arr = []
          function getFib(n) {
            if (n === 1 || n === 2) {
              return 1
            }
            if (arr[n]) {
              return arr[n]
            } else {
              arr[n] = getFib(n - 1) + getFib(n - 2);
              return arr[n]
            }
          }
          return getFib;
        }
        var result = outer();
        console.log(result(100));
    
    
        // 方法三:利用匿名函数自调用优化,减少使用全局变量===结合闭包进行性能优化(保护变量)
        var result = (function(){
          var arr = []
          function getFib(n) {
            if (n === 1 || n === 2) {
              return 1
            }
            if (arr[n]) {
              return arr[n]
            } else {
              arr[n] = getFib(n - 1) + getFib(n - 2);
              return arr[n]
            }
          }
          return getFib;
        })();
        console.log(result(100));
  • 相关阅读:
    Java——多线程常见面试题
    Java——线程定时器
    Java——多线程练习
    Java——线程池
    Java——线程间通信
    Java——线程死锁问题
    Java——线程同步
    Java多线程安全问题
    Java——多线程面试问题
    Java——多线程小例子
  • 原文地址:https://www.cnblogs.com/lixiaoxue/p/11228587.html
Copyright © 2020-2023  润新知