Fibonacci序列遞迴演算法與遞推(Java)
阿新 • • 發佈:2018-12-20
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 */ }