首页 > 编程知识 正文

给出斐波那契数列前n项递归与非递归的算法,斐波那契数列_递归算法

时间:2023-05-04 18:45:49 阅读:177990 作者:3150

对于斐波那契数列的计算是计算机算法经典问题,常见的算法有递归算法和非递归算法两种,那么它们之间的不同应该如何对比?

本文以python为例,比较两种不同算法在时间复杂度等方面的差异

代码比较递归算法:

#斐波那契数列递归算法(索引) : ifindex=1: return1else : return fib (索引-1) index-2 ) print (打印) fib

#斐波那契数列的非递归算法deffib(index ) : front=[ 1,1 ] ifindex==0or index==1: result=1while index 13360 result=front=result index--=1returnresultprint (fib (5) )虽然认为非递归算法对递归算法所要求变量相对较多,消耗了很多资源,但实际上

当测试的数值较小时(如前例的index==5),两者的差别不大,但如果index的数量变大,例如80,为什么会发现递归算法的执行速度明显低于非递归算法呢?

2 .原理(时间复杂度分析) )。

分析非递归算法的时间复杂度的话,由于index的值决定了执行次数,所以index的值n表示其时间复杂度,表示为O(n )

但是,使用递归算法时,会出现如下指数展开。

实际上,这样消耗的系统资源实际上更多,如果数量级为10,则展开的节点的数量为210-1个,因此该算法的时间复杂度为o(2n ),仅从该问题来看,递归算法实际上是

在日常编码和解决问题时,需要从多个维度进行思考。 不能只是为了代码的美丽或递归而递归。 应该具体问题具体分析,使用比较高效的算法策略。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。