Java 之 兔子问题

兔子问题又叫斐波那契数列(Fabonacci),是最先研究这个数列的人是比萨的列奥那多(又名费波那契),他描述兔子生长的数目时用上了这数列。

兔子问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 

1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

2.由此可以归纳出:

f(1)=1,f(2)=1;

f(n)=f(n-1)+f(n-2);

 

编程实现:

public class RabitQuestion{

  public static void main(String args[]){   

    int Month = 12;//第12个月   

    for(int i=1; i<=Month; ++i){   

      System.out.println("the"+i+"month of rabits:"+RabitQuestion.RabitSum(i));

    } 

}

 

  //通过递归计算兔子总算  

  public static int RabitSum(int num){

  //注意:方法必须为静态方法 才能为main()方法调用 ,因为main()为静态方法,否则报错:无法从静态上下文中引用非静态方法

  //总结:静态方法只能引用外部的静态方法和静态变量,非静态方法不管是静态还是非静态的都可以引用   

      if(num<=2){//第一、二个月兔子数均为一   

       return 1;

      }else{//第三个月开始 num月的兔子总数   

       return RabitSum(num-1)+RabitSum(num-2);

      }

   }

}

 

posted @ 2012-01-24 19:02  qin520  阅读(907)  评论(0编辑  收藏  举报