永发信息网

有一头牛,每年年初生一头小牛,每头小牛第四个年头每年年初也生一头小牛,按此规律,若无牛死亡,第二十

答案:2  悬赏:40  手机版
解决时间 2021-12-02 10:21
  • 提问者网友:记得曾经
  • 2021-12-01 23:18
有一头牛,每年年初生一头小牛,每头小牛第四个年头每年年初也生一头小牛,按此规律,若无牛死亡,第二十
最佳答案
  • 五星知识达人网友:酒者煙囻
  • 2021-12-01 23:31
先画张图

这张图应该能看得懂,作为程序的校验。
程序不难,用list存牛的信息,list的size就是牛的数量
写了一个牛类,唯一一属性是年龄,根据年龄判断是否可以生育,如果可以,就创建一个新的牛类放到list里面,
程序的缺点可能效率不高,有时间在优化
import java.util.ArrayList;
import java.util.List;

public class $ {

    private static List data = new ArrayList();

    public static void main(String[] args) {

        Cow cowA = new Cow(4);
        data.add(cowA);

        test(20);
    }

    private static void test(int year) {
        for (int i = 1; i <= year; i++) {
            int len = data.size();
            for (int j = 0; j < len; j++) {
                Cow cow = data.get(j);
                cow.addAge();
                if (cow.bear()) {
                    data.add(new Cow(1));
                }
            }
            System.out.println("第" + i + "年:" + data.size());
        }
    }
}

class Cow {
    private int age;

    public Cow(int age) {
        this.age = age;
    }

    public void addAge() {
        this.age++;
    }

    public boolean bear() {
        return age >= 4;
    }
}结果:
第1年:2
第2年:3
第3年:4
第4年:6
第5年:9
第6年:13
第7年:19
第8年:28
第9年:41
第10年:60
第11年:88
第12年:129
第13年:189
第14年:277
第15年:406
第16年:595
第17年:872
第18年:1278
第19年:1873
第20年:2745
全部回答
  • 1楼网友:千夜
  • 2021-12-02 00:33

用递归的思想做,代码很短,有什么疑问请追问。


public static int countCowTotal(int years) {
    int result = -1;
    if(years < 4)
        result = years + 1;
    else {
        result = countCowTotal(years - 1) + countCowTotal(years - 3);
    }
    return result;
}

public static void main(String[] args) {
    System.out.println(countCowTotal(20));
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯