首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

一路题,

2013-09-09 
一道题,。。。农场一头小母牛,每年绳头小母牛,母牛五岁产母牛,二十年后多少牛?有java写出来。。。java一道题[解

一道题,。。。
农场一头小母牛,
每年绳头小母牛,
母牛五岁产母牛,
二十年后多少牛?


有java  写出来。。。
java 一道题
[解决办法]

引用:
农场一头小母牛,
每年绳头小母牛,
母牛五岁产母牛,
二十年后多少牛?


有java  写出来。。。
你要考虑公牛配种问题。。。
[解决办法]
import java.util.ArrayList;

public class TestCow {

/**
 * @param args
 */
public static void main(String[] args) {
ArrayList<Cow> farm = new ArrayList<Cow>();
Cow source = new Cow();
farm.add(source);
// 每年都让农场的所有母牛过一次生日
for (int year = 1; year <= 20; year++) {
// 遍历所有的母牛,让它过生日
for (int i = 0; i < farm.size(); i++) {
Cow mother = farm.get(i);
Cow daughter = mother.birthday();
// 如果生了母牛则加入农场
if (daughter != null) {
farm.add(daughter);
}
}
System.out.println("第" + year + "年,农场规模:" + farm.size());
}
}

}

/**
 * 母牛类
 * 
 * @author mfanw
 * 
 */
class Cow {
/**
 * 刚出生的年龄是0岁
 */
private int age = 0;

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

/**
 * 母牛过生日,如果超过5岁则生一个母牛
 * 
 * @return
 */
public Cow birthday() {
age++;
if (age >= 5) {
System.out.println("我超过5岁了,生一个母牛!");
return new Cow();
}
return null;
}

}

[解决办法]
递归
public class BornOx {
public static void main(String[] args) {


System.out.println(born(1, 6, 20));
}

public static int born(int num, int age, int year) {
if (year <= 0) {
return num;
} else {
if (age >= 5) {
return born(num, age + 1, year - 1) + born(1, 1, year - 1);

} else {
return born(num, age + 1, year - 1);
}
}

}
}


[解决办法]
//农场类
public class Farm {
// 所有的母牛
private List<Cattle> cattles = new ArrayList<Cattle>();

// 初始化农场,最初只有一只5岁的母牛
public Farm() {
Cattle cattle = new Cattle();
cattle.setAge(5);
cattles.add(cattle);
}
// 每过一年,计算出母牛数
public int cattleCountAfterOntYear() {
//遍历所有母牛,判断的没有超过5岁的母牛
for (int i = 0; i < cattles.size(); i++) {
Cattle cattle = cattles.get(i);
//由于过了一年,所以所有的母牛都加了一岁
cattle.increaseAge();
//判断母牛是不是5岁了
if (cattle.getAge() >= 5) {
//母牛生小母牛,初始化小母牛的年龄为0
Cattle newCattle = new Cattle();
cattles.add(newCattle);
}
}
// 返回总母牛数
return cattles.size();
}
public static void main(String[] args) {
Farm cattleCount = new Farm();
//20年后,的母牛数,有点多啊!!!900多。。。。。。
for (int i = 0; i < 20; i++) {
int thisYearNewCattleCount = cattleCount.cattleCountAfterOntYear();
System.out.println("第 " + (i + 1) + " 年的母牛数: "
+ thisYearNewCattleCount + " 头");
}
}
}
// 定义母牛类
class Cattle {
int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// 每过一年,母牛会长一岁
public void increaseAge() {
age++;
}
}

热点排行