之前一个很常见的古典问题 就是菲波拉契数列的那个 一对兔纸 第三个月开始生一对新兔纸。。问每个月的兔纸总数是多少 (比如计算到第12个月。。)
可以不可以用面对对象的方法来解决。我想定义一个兔纸类 然后定义一个age的属性 当age大于等于3时 则生成一个新的兔纸对象。。但是实在不知道该怎么写了。。是我太弱了。。还是这个想法根本没有办法实现?
红字是搞不定的部分。。
————————————我分———以下为未完成代码———————————public class Rabit{

private int age = 0;
private static int num = 0;

public Rabit(int age){
num++;
this.age = age;
}

public int Getnum(){
return this.num;
} public void Givebirth(){
if (this.age >= 3){
Rabit 

else{
}
}

public int Getage(){
return this.age;
}
}

解决方案 »

  1.   

    //如果每对兔子每隔三个月都能生一对兔子的话
    public static void main(String[] args) {
    int nowSum = 1;//当前月份兔子总数
    int endMonth = 12;//截止月数
    int sum = 1;//最后的兔子总数

    for(int k=1; k<=endMonth; k++){
    for(int m=0; m<nowSum; m++){
    if(k%3 ==0){
    sum = sum + 1;
    }
    }
    nowSum = sum;
    //打印当前月份兔子树
    System.out.println(k+"月:"+nowSum);
    }
    //打印兔子总数
    System.out.println("总数:"+sum);
    }//如果每对兔子生完一次就不能再生的话
    public static void main(String[] args) {
    int endMonth = 12;//截止月数
    int sum = 1;//最后的兔子总数

    for(int k=1; k<=endMonth; k++){
    if(k%3 ==0){
    sum = sum + 1;
    }
    //打印当前月份兔子树
    System.out.println(k+"月:"+sum);
    }
    //打印兔子总数
    System.out.println("总数:"+sum);
    }
      

  2.   

    额 这个没有正面回答我的问题啊不过貌似我找到一个解决途径了。。可以定义一个
    public Rabit GiveBirth()的方法。。return 一个 新的Rabit。。
    我再自己试试 
      

  3.   

    public static int getSum(int month){
    if(month==0){
    return 1;
    }
    else if(month==3){
    return 2;
    }
    else if(month%3==0){
    return getSum(month-3)+getSum(month-6);
    }else 
    return getSum(month-month%3);
    }
      

  4.   

    public static int getSum(int month){
    if(month<0){
    return -1;
    }else{
    List<RabitEnti> ls=new ArrayList<RabitEnti>();
    RabitEnti ra=new RabitEnti(3);
    ls.add(ra);
    int num=0;
    while(num<=month){
    if(num>0&&num%3==0){
    List<RabitEnti> l=new ArrayList<RabitEnti>();
    for (RabitEnti rabitEnti : ls) {
    if(rabitEnti.getAge()>2){
    l.add(new RabitEnti());
    }
    rabitEnti.setAge(rabitEnti.getAge()+1);
    }
    for (RabitEnti rabitEnti : l) {
    ls.add(rabitEnti);
    }
    num++;
    }
    else{
    num++;
    for (RabitEnti rabitEnti : ls) {
    rabitEnti.setAge(rabitEnti.getAge()+1);
    }
    }

    }
    return ls.size();
    }
    }
    已解决,就是有点罗嗦,你看看
      

  5.   

    public static int getSum(int month){
    if(month<0){
    return -1;
    }else{
    List<RabitEnti> ls=new ArrayList<RabitEnti>();
    RabitEnti ra=new RabitEnti(3);
    ls.add(ra);
    int num=0;
    while(num<=month){
    if(num>0&&num%3==0){
    List<RabitEnti> l=new ArrayList<RabitEnti>();
    for (RabitEnti rabitEnti : ls) {
    if(rabitEnti.getAge()>2){
    l.add(new RabitEnti());
    }
    rabitEnti.setAge(rabitEnti.getAge()+1);
    }
    for (RabitEnti rabitEnti : l) {
    ls.add(rabitEnti);
    }
    num++;
    }
    else{
    num++;
    for (RabitEnti rabitEnti : ls) {
    rabitEnti.setAge(rabitEnti.getAge()+1);
    }
    }}
    return ls.size();
    }
    }
    已解决,就是有点罗嗦,你看看