题目---牛生牛---面向对象
农场一头小母牛,每年生头小母牛。母牛五岁产母牛,二十年上多少牛?/** * 一群牛的故事 */import java.util.ArrayList;import java.util.List;/** * 母牛 * @author dinghun8leech */class Cow { /** age 年龄 */ private int age; /** * 默认构造方法,创建(生产)一头年龄为1岁的小母牛 */ public Cow() { age = 1; } /** * 成长,母牛年龄+1 */ public void grow() { age++; } /** * 生产,当母牛年龄在5岁或以上时产生1头小母牛 * 年龄低于5岁时无法生产,返回null * @return Cow 一头年龄为1岁的小母牛 */ public Cow produce() { if (age > 4) { return new Cow(); } return null; }}/** * 怪兽牧场 * @author dinghun8leech */public class Farm { public static void main(String [] args) { int year = 20;//测试年限 int init_cow_count = 1;//牧场起始小母牛数量 List<Cow> cows = new ArrayList<Cow>();//牛棚 for (int i=0;i<init_cow_count;i++) { cows.add(new Cow()); } for (int i=0;i<year;i++) { int cow_count = cows.size(); for (int j=0;j<cow_count;j++) {//每年都遍历一下牛棚中的所有牛 Cow cow = cows.get(j); Cow newCow = cow.produce(); if (newCow != null) {//看看当前年龄能否生产小牛 cows.add(newCow); //这里的编程技巧,cows是扩充的,用一个变量来控制下标 } cow.grow();//每年都会成长 } } System.out.println("怪兽牧场"+year+"后的母牛数从"+init_cow_count+"头增长到"+cows.size()+"头。"); }}//下面用递归方法,变成纯算法问题。。。。