实现 斐波那契数列 的几种方法

function fib(n){

if(n===1 || n===2) return 1

return fib(n-1) + fib(n-2)

}

这是使用递归方法来实现,n就是斐波那契数列位数的值,不过这种有个缺点,就是当n的值很大的时候(位数高的时候)会很消耗性能,会计算很久

function fib(n){

let a=1,b=1,c

        for( let i=3; i<n ;i++){

                c=a+b

                a=b

                b=c

          }

        return b

}

这是使用非递归的传统用法,在性能上会比较好点


function fib(n) {
  let arr = [0, 1, 1]
  let(i=3; i<=n; i++) {
    arr[i] = arr[i-1] + arr[i-2]
  }
  return arr[n]
}


这是使用空间转换率来实现

​function fib(n) {
  let cache = [0, 1, 1]
  function _fib(n) {
    if(cache[n]) return cache[n]
    cache[n] = _fib(n-1) + _fib(n-2)
    return cache[n]
  }
  return _fib(n)
}

这是利用缓存来实现的,极大的提高性能,不用去重新去计算一些计算过的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值