问题描述
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
第一种做法
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner se =new Scanner(System.in);
int n=se.nextInt();
int f[]=new int[n+2];
f[1]=1;
f[2]=1;
if(n>2){
for (int i = 3; i <=n; i++) {
f[i]=(f[i-1]+f[i-2])%10007;
}
}
System.out.println(f[n]);
}
}
2第二种做法
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner se =new Scanner(System.in);
int a=se.nextInt();
int n=Integer.valueOf(a);
int f1=1;
int f2=1;
int fn=0;
if(n<3){
System.out.println("1");
return;
}
for (int i = 3; i <=n; i++) {
if(f1>10007) f1=f1%10007;
if(f2>10007) f2=f2%10007;
fn=f1+f2;
f1=f2;
f2=fn;
}
System.out.println(fn%10007);
}
}
问题描述
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
求前10项。
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(f(10));
}
public static int f(int n){
if(n==1||n==2)
{
return 1;
}
else
{
return f(n-1)+f(n-2);
}
}
}