遞迴一:斐波那契數列
阿新 • • 發佈:2018-11-16
/**
* 題目:斐波那契數列
* 描述:大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。n<=39
* 解決方案:方法一:遞迴
* 方法二:動態規劃,如果需要快取所有的結果,用額外的陣列空間進行儲存。只要結果的話,就只需要中間的一個變數
*
* 裴波那契背景:又稱黃金分割數列或者兔子數列,從第三項開始,每一項都等於前兩項之和
* 主要是遞迴和非遞迴,
* */
public class One { //遞迴 public static int One(int n) { if(n ==0 ) { return 0; } if(n == 1 ) { return 1; } return One(n-1)+One(n-2); } //對結果要求快取 public static int Two(int n) { if(n<=2) return n; intarr[] = new int[n+1]; arr[0] =0; arr[1] =1; for(int i=2;i<=n;i++) { arr[i] = arr[i-1] +arr[i-2]; } return arr[n]; } //最優解: public static int Three(int n) { if(n<2) return n; int one = 0; int two = 0; intresult =0; for(int i = 2; i<=n;i++) { result = one + two; one = two; two = result; } return result; } }