解决斐波那契数列的四种算法

本文介绍了斐波那契数列的四种不同算法:递归算法、循环函数算法、循环向量函数算法和数学公式算法,并分析了各自的优缺点及时间复杂度。

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

斐波那契数列描述:1,1,2,3,5,8,13,21……

这个数列从第三项开始,每一项都等于前两项之和。它的通项公式为:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}

1.递归算法:最好理解的算法,和人的思路相当接近,对应的数学描述很清晰,容易编程.但是在C++语言中是使用栈机制实现的,如果使用递归函数,将会占用大量的内存资源,对内存中的栈区进行掠夺,在大量调用递归函数之后很可能造成内存崩溃,就算不崩溃,也会是长时间的运算.在调用了clock函数后,计算出了递归函数的耗时,是四个函数中最大的.而且这是个致命的缺点.时间复杂度为O(2n)(括号内为2的n次方).

2.循环函数算法:这个方法需要对整个数列有一定的把握,并且能看出其中的规律,用我们班的一位同学说的"就是不停的赋值& quot;.说的很形象,这样就是一个循环的过程,每次调用fibo2,都会一次次循环,时间复杂度为O(n2)(括号内为n的平方)

3.循环向量函数算法:同算法2类似,都是以循环来解决问题,但是算法3用向量先分配了一定的空间来实现,然后逐个求得向量的元素,最后得到数列的第n项值,这样就比算法2耗费更多的时间来进行下标操作,所以耗时比算法2多.

4.数学公式算法:使用一个数学公式来进行计算,几乎不耗什么时间,一次运算就可以得到结果,时间和n的取值没有太大关系,只和运算性能有关.

转载于:https://www.cnblogs.com/Live-he/archive/2008/06/17/1224242.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值