zoukankan      html  css  js  c++  java
  • js 斐波那契序列

    // 旧版, 由于有递归, 时间空间复杂度太大
    function fib1(n) {
      if (n === 1 || n === 2) {
        return 1;
      } else {
        return fib1(n - 1) + fib1(n - 2);
      }
    }
    
    // 新版, 不要递归, 只遍历一次
    function fib2(n) {
      let seq = [].fill.call({ length: n}, 0);
      seq[0] = seq[1] = 1;
      for (var i = 2; i <= (n - 1); i++) {
        seq[i] = seq[i - 1] + seq[i - 2]
      }
      return seq[i - 1];
    }
    
    // 测试代码, fib1 不要传入 大于 50 的数, 电脑可能会卡死很久, fib2 可以传入比如 1000, 10000 一秒就遍历完了
    console.time(1)
    fib1(20);
    console.timeEnd(1)
    console.time(2)
    fib2(20);
    console.timeEnd(2)
    

    求第n个斐波那契数

    fibonacciRecursively(n) {
      if ( < 2) return n;
      return fibonacciRecursively(n - 1) + fibonacciRecursively(n + 1);
    }
    
    fibonacciRecursively(n, acc1, acc2) {
      if (n === 0) return acc1;
      return fibonacciRecursively(n - 1, acc2, acc1 + acc2);
    }
    
  • 相关阅读:
    webpack-dev-server的使用及说明
    Web框架
    HTTP协议
    jQuery的使用
    发红包
    python操作mysql
    mysql索引与补充
    JavaScript之BOM操作
    JavaScript之DOM操作
    JavaScript之基础语法
  • 原文地址:https://www.cnblogs.com/shrekuu/p/7833063.html
Copyright © 2011-2022 走看看