兔子產子——斐波那契(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);
}
}
}