Fibonacci递推公式:
f(1) = f(2) = 1;f(n) = f(n-1)+f(n-2)(n>2).在这里取他除以10007的余数
递归
public class Fibonacci {
static int digui(int n) {
if(n == 1||n == 2) {
return 1;
}else {
return digui(n-1) + digui(n-2);
}
}
public static void main(String[] args) {
long start=System.currentTimeMillis(); //获取开始时间
int n,num;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
num = digui(n)%10007;
System.out.println(num);
long end=System.currentTimeMillis(); //获取结束时间
System.out.println("程序运行时间: "+(end-start)+"ms");
}
/**
* output:
* 40
* 2573
* 程序运行时间: 359ms
*/
}
递推
import java.util.Scanner;
public class Fibonacci2 {
public static void main(String[] args) {
int n;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
long start = System.currentTimeMillis();
int a[] = new int[n+1];
a[1] = a[2] = 1;
if(n == 1||n == 2) {
System.out.println(a[1]);
}else {
for(int i = 3;i<=n;i++) {
a[i] = a[i-1] + a[i-2];
}
System.out.println(a[n]%10007);
}
long end = System.currentTimeMillis();
System.out.println("运行时间:" + (start-end) + "ms");
}
/**
* output:
* 40
* 2573
* 运行时间:0ms
*/
}