作者:夏晓林
地点:烟大计控
时间:2017.04.23
题目描述:
构建Fibonacci序列,分别用递归、递推、数组构建Fibonacci序列的若干项,分别从时间、空间的复杂度角度对三种方法进行比较,并实际测试三种方法程序运行的时间。
C语言代码:
#include<stdio.h>
#include <stdlib.h>
#include<time.h>
int digui(int n)
{
if (n <=1)
return n;
else
return digui(n-1) + digui(n-2);
}
int shuzu(int n)
{
int i;
int a[n];
a[0]=0;
a[1]=1;
for(i=2; i<n; i++)
a[i]=a[i-1]+a[i-2];
for(i=0; i<n; i++)
printf("%d ",a[i]);
return 0;
}
int ditui(int n)
{
int a1=0,a2=1,a3,i;
for(i=0; i<n; i++)
{
if(i==0)
printf("%d ",a1);
else if(i==1)
printf("%d ",a2);
else
{
a3=a1+a2;
printf("%d ",a3);
a1=a2;
a2=a3;
}
}
return 0;
}
int main()
{
time_t c_start,c_end;
int n,i;
printf("请输入要输出多少项斐波那契数列:");
scanf("%d",&n);
c_start=clock();
for (i = 0; i < n; i++)
{
printf("%d ", digui(i));
}
printf("\n");
c_end=clock();
printf("递归时间为%f\n",difftime(c_end,c_start));
c_start=clock();
ditui(n);
printf("\n");
c_end=clock();
printf("递推时间为%f\n",difftime(c_end,c_start));
c_start=clock();
shuzu(n);
printf("\n");
c_end=clock();
printf("数组时间为%f\n",difftime(c_end,c_start));
return 0;
}