題目:寫一個函數,輸入n,求斐波那契數列的第n項。
1 package Solution; 2 3 /** 4 * 劍指offer面試題9:斐波那契數列 5 * 題目:寫一個函數,輸入n,求斐波那契數列的第n項。 6 * 0, n=1 7 * 斐波那契數列定義如下:f(n)= 1, n=2 8 * f(n-1)+f(n-2), n>2 9 * @author GL 10 * 11 */ 12 public class No9Fibonacci { 13 14 public static void main(String[] args) { 15 System.out.println("第4項斐波那契數列的值為:"+fibonacci(4)); 16 } 17 18 /* 19 * 采用遞歸實現斐波那契數列生成函數,效率低 20 */ 21 public static int generateFibonacci(int n){ 22 if(n==0) 23 return 0; 24 if(n==1) 25 return 1; 26 return generateFibonacci(n-1)+generateFibonacci(n-2); 27 } 28 29 /* 30 * 采用循環實現斐波那契數列 31 * 存儲數列中間項,求得結果 32 */ 33 public static int fibonacci(int n){ 34 int[] result={0,1}; 35 if(n<2) 36 return result[n]; 37 int fibNMinusOne=1; 38 int fibNMinusTwo=0; 39 int fibN=0; 40 for(int i=2;i<=n;i++){ 41 fibN=fibNMinusOne+fibNMinusTwo; 42 fibNMinusTwo=fibNMinusOne; 43 fibNMinusOne=fibN; 44 } 45 return fibN; 46 } 47 }