解决方案 »

  1.   

    菲波拉契数列 的核心是 a+=b; b+=a
      

  2.   

    那句 “month -= month”什么意思。斐波那契数列就是个递归调用,n大于2时,就返回n-1和n-2的和值,n=1(n=2)截止.
      

  3.   


    刚才忘记说了,在Dg的方法中,为何限制了count[]的边界?假如输入month = 101怎么办?存在count[101]么?
      

  4.   

    count=count-1;是第一个月的时候数组下标是0;
      

  5.   

    n=1,f[n]=1;
    n=2,f[n]=1;
    n>=3,F[n]=F[n-1]+F[n-2];这是大概思想;
    我特意去敲了下代码:有几行是这样的:
    public static int Dg(int num){
         int[] count=new int[100];
         if(num<2){
         count[0]=1;
         count[1]=1;
         }else{
         count[num]=count[num-1]+count[num-2];
         }
        
         return count[num];
         }其中,如果你输入的num大于2,则不执行if语句中的count[0]=1;
         count[1]=1;
    直接执行的else语句。而数组初始化count【100】全是0(避免空指针),所以你不管输入大于2的什么数,返回值都是0;
      

  6.   

    import java.util.*;
    public class test_01{
      public static int dg(int num)
      { 
        if(num<3)
           {
            count[0]=1;
            count[1]=1;
            count[2]=1;
            }
        else
           count[num]=dg(num-1)+dg(num-3);
        return  count[num];
       }
      public static void main(String[] args)
       {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入月份:");
        int month=sc.nextInt();    
        System.out.print("兔子的总数是:"+dg(month)+"对");
       }
       static int count[]=new int[100];
    }楼主的month-=month的运算结果始终都是0,而且根据楼主这道题的描述,小兔子三个月后才能生一对小兔子,所以count[num]应该等于dg[num-1]+dg[num-3];if语句也要相应的变化。
      

  7.   

    ta的意思是count[]的下标为0,所以num在传参时num=num-1;如果是5月份,则要传4进去,count[0]开始的。
    你这么改,还是不对吧。
      

  8.   

    public class Dg {
      public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
    System.out.print("请输入:");
    int num=input.nextInt();
    System.out.println("结果是:"+result(num));
    }
      public static int result(int num){
      
      int m1=1;
      int m2=1;
      int result=1;
      for (int i = 2; i < num; i++) {
    result=m1+m2;
    m1=m2;
    m2=result;
    }
      return result;
      }
    }