两个程序解决的问题是一样的。第一个用了函数,第二个没用。可是第二个比第一个慢了好几倍。
程序一:#include<stdio.h>
void main()
{
int M,N,t,i;
int a[40];
a[0]=1;
a[1]=1;
for(i=2;i<40;i++)
a[i]=a[i-1]+a[i-2];
while(scanf("%d",&M)>0)
{
for(i=1;i<=M;i++)
{
scanf("%d",&t);
printf("%d\n",a[t-1]);
}
}
}
程序二:
#include<stdio.h>
int fun(int x)
{
if(x==1)
return 1;
if(x==2)
return 1;
if(x==3)
return 2;
x=fun(x-1)+fun(x-2);
return;
}
void main()
{
int N,i,M;
while(scanf("%d",&N)>0)
{
for(i=1;i<=N;i++)
{
scanf("%d",&M);
printf("%d\n",fun(M));
}
}
}
为什么第一个程序比第二个快了好几倍?