斐波那契数列时间复杂度和通项公式的一些记录

本文记录了斐波那契数列的时间复杂度问题,探讨了递归算法的效率低下,介绍了数列的通项公式及指数级的时间复杂度。还讨论了通过矩阵相乘的log级别算法以及尾递归优化,强调了算法优化的重要性,特别是尾递归在节省内存栈空间方面的优势,并提出了自底向上的动态规划解决思路。
摘要由CSDN通过智能技术生成

       真没啥好说的QAQ。但是前阵子公司的技术BOSS和咱纠结这个数列的一些问题,于是我只好记录一下一些东西,表示自己还是学到了一点东西滴~

       话说真查便发现这玩意鼎鼎大名无处不在,反正我高数不好大部分看不懂,就觉得不明觉厉……

       所谓斐波那契数列就是指1 1 2 3 5 8 ....这一数列。数列的格式是F(1)=1 ,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=3)。 斐波那契数列原型是个非常典型的递归算法,根据上述定义可以很简单的写出求该数列第n位的递归算法为:

  

int fib(int n){   
   if(n>=2){       
      return 1;    
   }    
   return fib(n-1)+fib(n-2);
}


         这个丑陋的函数十分鲜明滴证明了一个道理,那就是递归算法严重影响计算性能=-=。我自己实际运行了一下,电脑在计算到第43位数字时开始耗费大量的时间:

计算位数32结果2178309计算次数4356617套O(n)2178309
计算位数33结果3524578计算次数7049155套O(n)3524578
计算位数34结果5702887计算次数11405773套O(n)5702887
计算位数35结果9227465计算次数18454929套O(n)9227465
计算位数36结果14930352计算次数29860703套O(n)14930352
计算位数37结果24157817计算次数48315633套O(n)24157817
计算位数38结果39088169计算次数78176337套O(n)39088169
计算位数39结果
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值