斐波那契數 Fibonacci by Java


方法一:遞歸


/**
 * 斐波納契數列(Fibonacci Sequence):
 * F1=1                   (n=1)
 * F2=1                   (n=2)
 * F(n)=F(n-1)+F(n-2)           (n>=3)
 * @author guozw
 *
 */
public class Fibonacci00 {
    public static long fib(int n) {
        if (n <= 1) 
        return n;
        else 
        return fib(n-1) + fib(n-2);
    }


    public static void main(String[] args) {
        int N = Integer.parseInt("20");
        for (int i = 1; i <= N; i++)
            System.out.println("第" +i + "個數: " + fib(i));
    }


}


方法二:非遞歸


/**
 * 斐波納契數列(Fibonacci Sequence):
 * F1=1                   (n=1)
 * F2=1                   (n=2)
 * F(n)=F(n-1)+F(n-2)           (n>=3)
 * @author guozw
 *
 */
public class Fibonacci {   
    
    /*輸出斐波那契數*/  
    public static void printFibonacciNumber(long f1,long f2,int n){//the first number, the second number,the totel fibonacci numbers   
        for(int i = 1;i <= n;i++){   
            System.out.print(f1+" "+f2+" ");//先輸出前兩個數   
            if(i % 5 == 0)
            System.out.print("\n"); //10個數自動換行<爲了顯示,無實際意義> 
            
            f1 = f1+f2;   //計算下兩個數
            f2 = f1+f2;   
        }   
           
       /* 後數除前數爲黃金分割點  */
        System.out.print("\n"+"-------------------------------------"+"\n");   
        System.out.println((double)f2/f1);//越到後邊,後數除前數越接近黃金分割點   
           
           
    }   
       
    /*輸出斐波那契數組*/  
    public static void printFibonacciArray(long f1,long f2,int n){//the first number, the second number,the totel fibonacci numbers   
        long f[] = new long[n];   
        f[0]=f1;   
        f[1]=f2;   
        for(int i =2;i <n;i++){ 
            f[i]=f[i-2]+f[i-1]; //數組的第三個數開始爲前兩個數的和  
        }   
        System.out.println("-------------------------------------"+"\n");   
        System.out.println(java.util.Arrays.toString(f)); //把數組轉化成String輸出  
           
    }   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
      //  Fibonacci.printFibonacciNumber(0, 1, 10);//print the 20 advanced fibonacci number   
        Fibonacci.printFibonacciArray(1, 1, 15);   
    }   
  
}  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章