跟这个帖子一样 http://topic.csdn.net/u/20100112/14/06f8eaf8-5e3c-4439-bbb4-552f76190118.html

解决方案 »

  1.   

    递归题,8>2,执行con(n - 1) + con(n - 2); 也就是con(8-1)+con(8-2), 得到con(7)和con(6)。由于con(7)和con(6)还不知道答案,然后计算con(7),con(6),就继续调用public static int con(int n)方法,把7和6代入,即con(7 - 1) + con(7 - 2),和con(6 - 1) + con(6 - 2),以此类推,直到con(1)得到值为1再反推回去,最终获得答案
      

  2.   


    public void con(int month){
      int[] monthcount=int[month];
      if(month<1){
       return 1;
      }
     for(int i=1;i<=month;i++){
      if(i<3){
       sum=1;
       monthcount[i]=1;
      }else{
       monthcount[i]=monthcount[i-2]+monthcount[i-1];
      }
     }
     System.out.println(monthcount[month-1]);
    }
      

  3.   

    这叫做Tree Recursion,效率是n次方的。
    最好用DP来解决。
      

  4.   

    con(n - 1)三个月后第一次产崽,con(n - 2)以后每个月产一次崽
      

  5.   

    http://zh.wikipedia.org/wiki/斐波那契数列
      

  6.   

    con(n - 2)是第n-2月的兔子数,这些兔子在第n月都会产崽,就是说第n月新增con(n - 2)。
    第n-1月有con(n-1)个, 加上新产的兔子con(n - 2)就是第n月的兔子数
      

  7.   

    到最后得到con(1) 然后 1的话执行 return 1  , con2 = 1 ,con 3 = 2   con4 = con3
    +con 2  = 
      

  8.   

    第一个月   第二个月  第三个月 第四个月  第五个月  第六个月  第七个月 第八个月
       1        1        2      3         5        8      13      21
    这个数字就相当于一种我们常见的规律

     public static int con(int n) { 
    if (n > 2) { 
    return con(n - 1) + con(n - 2);    

    return 1; 
    } public static void main(String[] args) { 
    System.out.println(con(8));   用这个con(8)随方法con()进行递归调用,当n=1或2即第一个月或第二时就返回1, 当n>2时就返回前两个月的兔子的和。  理解了吗 ?