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