首页 > 编程知识 正文

斐波那契数列 递归 时间复杂度,用递归和非递归实现斐波那契数列

时间:2023-05-04 20:44:55 阅读:178015 作者:4939

1、在学习数据结构这门课程的过程中,发现酷我草莓数列的递归算法和非递归算法,以及时间复杂度分析是个小难点。 所以我会特别总结。

酷草莓数列的表示:

Fibonacci数列简介:

f(1)=1

f(2)=1

f(n )=f(n-1 ) f ) n-2 ) (n2 ) ) ) ) ) ) f(n )=f(n-1 ) f ) n-2 ) ) ) ) ) f ) n ) n ) n ) ) n ) n ) n ) n ) n ) n ) n ) n ) n ) n ) n ) n )

2,)1)酷苺数列递归算法思想的描述:利用递归思想,每次计算当前值时,引用前面两个值,一步一步递归,直到最开始使用f(1)和f(1)。

递归算法:

intrecursive_method(intn ) if ) n==1|||n==2) return1; ELSEreturnrecursive_method(n-1 ) recursive _ method (n-2 ); (2)递归算法的调用顺序的例子。

在回归呼叫中,fib(3)被计算了2次,fib(3)被计算了3次。 FIB(1)调用了5次,FIB(1)调用了3次。 所以,递归虽然效率低下,但具有代码简单容易理解的优点。

)3)递归算法的时间复杂度为o(2^ ) n/2 ) )=t ) n )=o )2^n )。 这个时间的复杂度参考具体的计算方法,http://BBS.pediy.com/showthread.PHP? t=123051。

3,)1)酷草莓的非递归算法

span style=' font-family : microsoftyahei;' intnon_recursive_method(intn ) {int p=1; int q=1; if(n==1||n==2)返回1; else{for(intI=3; i n; I ) {int tmp=p; //将第一个值p分配给tmpp=q;//把第2个值q分配给p,以后每次代入把得到的最新的f(n )分配给p。 从后面的句子中可以看出,q被存储为最新的f ) n ) q=tmp q。 }return q; }/span(2)酷的草莓非递归算法的时间复杂度为o(n )

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