package com.jasonhuang.test;import java.util.ArrayList;/** *//** * 规则: 1.成年羊每年生一只小羊 (从第四年开始生育) 2.不分公母 3.长生不老 * * 设第一年从外进一只小羊,从此子又生孙,孙又生子,问第n年共有多少羊? */public class TestSheep1 ...{ // 羊圈 private ArrayList<Sheep> sheeps = new ArrayList<Sheep>(); /** *//** * 测试到下一年 */ private void next() ...{ // 羊圈所有羊长大一岁 int length = sheeps.size(); for (int i = 0; i < length; i++) ...{ sheeps.get(i).grow(); } } public TestSheep1() ...{ // 买进第一只羊 Sheep sheep = this.new Sheep(); sheeps.add(sheep); } /** *//** * @param args */ public static void main(String[] args) ...{ TestSheep1 test = new TestSheep1(); // 四十年,太多会导致内存不足 for (int i = 1; i <= 40; i++) ...{ // 测试到下一年 test.next(); // 打印羊圈总数 System.out.printf("%d年后,一共%d只羊。 ", i, test.sheeps.size()); } } class Sheep ...{ // 羊的岁数 private int age = 0; public Sheep() ...{ // 买进来为0岁 age = 0; } public void grow() ...{ // 到四岁可以产子,并放入羊圈 if (++age >= 4) ...{ Sheep sheep = new Sheep(); sheeps.add(sheep); } } }}