题目
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
代码块
#include<stdio.h>
long fib(int n)
{
long a;
if(n==2||n==1)
a=1;
else
a=fib(n-1)+fib(n-2);
return a;
}
void main()
{
int n,y;
scanf("%d",&n);
y=fib(n)%1007;
printf("f(n)除以1007的余数为:%d\n",y);
}
下面这个有问题,希望有大佬指点!
#include<stdio.h>
#include<stdlib.h>
void main(){
int N;
scanf("%d",N);
long f[100001];
f[1]=1;
f[2]=1;
int i=3;
for(i;i<=N;i++){
f[i]=(f[i-1]+f[i-2])%10007;
}
if(N==1)
printf("%d",f[N]);
else
printf("%d",f[N-1]);
}
注意:
由于当n越来越大,斐波那契数列也会越来越大。本文使用递归实现n大于2后的数列值的求解!