#include <stdio.h>
int fib(int n)
{
if(n==1 || n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
int main()
{
int m;
scanf("%d",&m);
printf("%d\n",fib(m)%10007);
return 0;
}
用递归会出现超时的现象,所以改为用数组:
#include <stdio.h>
#define N 100
int main()
{
int i,f[N];
f[1]=1;
f[2]=1;
scanf("%d",&i);
if(i>=1 && i<=N)
{
if(i==1 || i==2)
{
printf("1\n");
}
else
{
f[i]=f[i-1]+f[i-2];
printf("%d\n",f[i]%10007);
}
}
return 0;
}
不知道是出了什么问题,只有前三个数是对的,请问各位大神问题出在哪里,谢谢啦·~