首页 > 编程知识 正文

斐波那契数列的递归和非递归算法,斐波那契数列的非递归算法

时间:2023-05-05 16:02:04 阅读:178026 作者:1289

斐波那契数列:1、1、2、3、5、8、13 ……

虽然可以使用迭代算法和递归算法实现斐波那契数列并输出数列的第n项,但递归算法在计算时存在很多迭代计算,因此n值较大可能会导致内存溢出和计算时间延长。 使用迭代算法时也同样可以实现计算斐波那契数列第n项的功能。 代码示例如下所示

迭代算法:

publicstaticintfibonaccid (intnum ) if ) num=0) {return 0; (if ) num==1||num==2) {return 1; }int first=1,second=1,third=0; for(intI=3; i=num; I ) {third=first second; 第一次=第二次; second=third; }return third; }作为思想,在n=0的情况下return 0,在1=n=2的情况下return 1,在n=3的情况下n项f(n )=f(n-2 ) f(n-1 ),因此在计算数列的n项时使用一个for循环

递归算法:

publicstaticintFibonacci(intI ) if ) I=0) {return 0; (if ) I==1||I==2) {return 1; }returnFibonacci(I-2 ) Fibonacci (I-1 ); }n的值较小时,两种方式的计算时间之差不大,但n的值较大时,两者之间的计算时间之差变大。

N=10时,运转时间差异不大,基本一致

N=40时,此时的运转时间之差变得相当大

在N=45的情况下,时间差进一步变大

因此,当n值接近较大的值时,递归计算第n个值所花费的时间成为可怕的值,所以在n的值较大的情况下,优先反复算法

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