您的位置:首页 > 其它

兔子产子——斐波那契(Fibonacci)数列

2011-11-20 22:14 357 查看
 
兔子产子——斐波那契(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);
       }
    }
}

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息