1. 程式人生 > >Fibonacci序列遞迴演算法與遞推(Java)

Fibonacci序列遞迴演算法與遞推(Java)

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
	 */

}