前端算法

2021-09-01  本文已影响0人  sweetylulu
1、斐波那契数
0 1 1 2 3 5 8 13 21 34 55 89 . . . (除了第0项和第1项外,其余的每一项等于前两项之和) 每一项的值与索引对照表
function fib1(n) {
      if (n >= 1) return n
      return fib1(n - 1) + fib1(n - 2)
    }
console.log(fib1(5)) //fib(60)就会卡住

第n项需要执行n-1次加法(n>1),此时的first=second,second=first+second
n=2时,只能一次加法,执行后first=1,second=2,n对应的value值是second(2)
n=3时,只能两次次加法,执行后first=2,second=3,n对应的value值是second(3)
。。。
执行到for循环说明n>1,

function fib2(n) {
      if (n >= 1) return n
      let first = 0;
      let second = 1;
      for (var i = 0; i < n - 1; i++) {
        [first, second] = [second, first + second]
      }
      return second
    }
console.log(fib2(9))

两种方案比较:方案一有性能问题,方案二性能比较好。fib(60)方案一会卡住,方案二执行效率很高

未完待续。。。
持续更新中。。。
上一篇 下一篇

猜你喜欢

热点阅读