斐波那契数列

本文详细解析了斐波那契数列的计算方法,对比了递归和循环两种实现方式,并深入探讨了它们的时间复杂度和空间复杂度。通过具体实例,展示了循环方法作为最优方法的优势,即拥有最低的时间复杂度和空间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式:F(n)=F(n-1)+F(n-2)

 即每一项都等于前两项之和

以下介绍了两种方法:递归和循环

/**
 * 斐波那契数列,求第N个数
 */

//  递归
function f2(N){
  if(N == 1 || N == 2){
    return 1;
  }else{
    return f(N-1)+f(N-2);
  }
}

// 循环
function f2(N){
  var N1 = 1;
  var N2 = 1;
  var next;
    for(var i=3;i<=N;i++){
      next = N1 + N2;
      N1 = N2;
      N2 = next;
    }
    return next;
  
}
console.log(f1(6))
console.log(f2(6))

递归:

此种方法的缺陷:重复计算的次数太多,效率低
时间复杂度:O(2^N)
空间复杂度:O(N)

循环:

时间复杂度:O(N)
空间复杂度:O(1)(创建了四个对象,是常数,所以可忽略不计)
此种方法是"最优方法"
优点:时间复杂度和空间复杂度最低,而且可读性高
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

衣乌安、

嘿嘿,好心人赏俩钱儿~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值