面试题: 20年后农场中有多少头牛?

2014-11-24 07:29:08 · 作者: · 浏览: 9


package cn.itcast.day22.test;

import java.util.ArrayList;
import java.util.List;
/*
* 面试题: 农场中有2头牛, 每3年可以生2头小牛, 小牛每3年也可以生产2头小牛. 牛的寿命是10年.
问: 20年后农场中有多少头牛
*/
public class CowTest {

public static void main(String[] args) {
// 农场中最初有2头牛
Cow.farm.add(new Cow());
Cow.farm.add(new Cow());

// 循环20次, 代表20年
for (int i = 0; i < 20; i++) {
// 创建一个新的集合, 记住农场中所有的牛
List temp = new ArrayList();
temp.addAll(Cow.farm);

// 循环遍历所有的牛, 全部长大1岁
for(int j = 0; j < temp.size(); j++)
temp.get(j).growup();
}

// 循环20次之后, 获取牛的个数
System.out.println(Cow.farm.size());
}

}

class Cow {
private int age; // 牛的年龄
public static List farm = new ArrayList(); // 农场

public void growup(){
age++;
if(age % 3 == 0)
farm.add(new Cow());
if(age == 10)
farm.remove(this);
}
}

摘自 代俊建的专栏