CSDN博客

img daybreaker

TestSheep2

发表于2006/9/22 9:30:00  736人阅读

分类: 源代码

package com.jasonhuang.test;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * 规则: 1.成年羊每年生一只小羊 (从第四年开始生育) 2.不分公母 3.长生不老
 * 
 * 设第一年从外进一只小羊,从此子又生孙,孙又生子,问第n年共有多少羊?
 
*/

public class TestSheep2 {

    
// 羊圈羊的总数
    private int sheepCount = 0;

    
/**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        TestSheep2 test 
= new TestSheep2();
        
// 第一只羊
        Sheep sheep = test.new Sheep();
        
// 四十年,太多会导致内存不足
        for (int i = 1; i <= 40; i++{
            
// 每过一年,长大一岁
            sheep.grow();
            
// 打印羊圈总数
            System.out.printf("%d年后,一共%d只羊。 ", i, test.sheepCount);
        }

    }


    
class Sheep {
        
// 羊的岁数
        private int age = 0;

        
// 所有的子
        private ArrayList<Sheep> children = null;

        
public Sheep() {
            age 
= 0// 买进来为0岁
            sheepCount++// 羊圈总数加1
            children = new ArrayList<Sheep>(); // 初始化
        }


        
/*
         * 羊成长
         
*/

        
public void grow() {
            
// 遍历所有子,让子成长。
            Iterator<Sheep> it = children.iterator();
            
while (it.hasNext()) {
                Sheep sheep 
= it.next();
                sheep.grow();
            }


            
// 到四岁可以产子
            if (++age >= 4{
                Sheep sheep 
= new Sheep();
                children.add(sheep);
            }

        }

    }

}

 
阅读全文
0 0

相关文章推荐

img
取 消
img