有一头牛,每年年初生一头小牛,每头小牛第四个年头每年年初也生一头小牛,按此规律,若无牛死亡,第二十
答案: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
这张图应该能看得懂,作为程序的校验。
程序不难,用list存牛的信息,list的size就是牛的数量
写了一个牛类,唯一一属性是年龄,根据年龄判断是否可以生育,如果可以,就创建一个新的牛类放到list里面,
程序的缺点可能效率不高,有时间在优化
import java.util.ArrayList;
import java.util.List;
public class $ {
private static List
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
用递归的思想做,代码很短,有什么疑问请追问。
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));
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯