斐波拉契数列总结
问题提出:
分别用递归和非递归代码计算斐波拉契数列;比较效率,分析效率差异可能产生的原因。
#include<stdio.h> #include<stdlib.h> //递归实现 int list(int n){ if(n==0||n==1) return n; else if(n>1) return list(n-1)+list(n-2); else return 0; } //非递归实现 int text(int n){ int i,sum,sumn_1,sumn_2; sumn_1=1;//F(1)=1 sumn_2=0;//F(0)=0 for(i=2;i<=n;i++){ sum=sumn_1+sumn_2;//F(n)=F(n-1)+F(n-2) sumn_2=sumn_1; sumn_1=sum; } return sum; } int main(){ int n; printf("请输入n的大小"); scanf("%d",&n); list(n); text(n); printf("递归:斐波拉契数列值为:%d ",list(n)); printf("非递归:斐波拉契数列值为:%d",text(n)); system("pause"); return 0; }
结果截图: