兔子產子——斐波那契(Fibonacci)數列

 

兔子產子——斐波那契(Fibonacci)數列

描述

從前有一對長壽兔子,它們每一個月生一對兔子,新生的小兔子兩個月就長大了,在第二個月的月底開始生它們的下一代小兔子,這樣一代一代生下去,求解兔子增長數量的數列。

 

輸入

第1行是測試數據的組數n,後面跟着n行輸入。每組測試數據佔1行,包括一個正整數a(1 <= a <= 20)

 

輸出

輸出有1行,每行輸出對應一個輸入。輸出應是一個正整數序列,整數之間用空格分開。

 

樣例輸入

3

3

2

1

 

樣例輸出

1 1 2

1 1

1

 

 

參加代碼(Java版):

import java.util.*;

/**

 *   

 *      本程序功能:解決“兔子產子”這一問題,

 * 實際該問題是一個斐波那契(Fibonacci)數列問題,

 * 因此,可按斐波那契數列的規則來進行編寫算法。

 *  @author wu-lun

 *

 */

class FibonacciTest {

    public static void main(String[] args) {

       new Fibonacci();

    }

}

 

class Fibonacci{

    Scanner input = new Scanner(System.in),

           input2 = new Scanner(System.in);

    public Fibonacci(){

       System.out.println("請輸入組數 n = ");

       int n = input.nextInt();

      

       int a = 0;

       System.out.println("請輸入各組的數據個數:");

       for(int i=0; i<n; i++){

           a = input2.nextInt();

           PrintFib(a);

       }

    }

    /**

     *

     * @param 打印出每個月份的兔子對數

     */

    public void PrintFib(int a){

       for(int j=1; j<=a; j++){

           System.out.print(Fib(j) + " ");

       }

       System.out.println();

    }

   

    /**

     * 使用遞歸的方法,獲取各月份的兔子對數。

     * @param 組數

     * @return 各月份的兔子對數

     */

    public int Fib(int n){

       if(n == 1 || n == 2 ){  

           return 1;

       } else {

           //System.out.print(Fib(n-1)+ Fib(n-2)+" ");

           return Fib(n-1)+ Fib(n-2);

       }

    }

}

 

 

 

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