改动前/** 
 * 一群牛的故事 
 */  
import java.util.ArrayList;  
import java.util.List;  
/** 
 * 母牛 
 * @author dinghun8leech 
 */  
class Cow {  
    /** age 年龄 */  
    private int age;  
    /** 
     * 默认构造方法,创建(生产)一头年龄为1岁的小母牛 
     */  
    public Cow() {  
        age = 1;  
    }
    
    public Cow(int a) {  
        age = a;  
    }  
    /** 
     * 成长,母牛年龄+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 CowCount {  
    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(5));  
        }  
        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()+"头。");  
    }  
}  
  //怪兽牧场20后的母牛数从1头增长到431头。改动后/** 
 * 一群牛的故事 
 */  
import java.util.ArrayList;  
import java.util.List;  
/** 
 * 母牛 
 * @author dinghun8leech 
 */  
class Cow {  
    /** age 年龄 */  
    private int age;  
    /** 
     * 默认构造方法,创建(生产)一头年龄为1岁的小母牛 
     */  
    public Cow() {  
        age = 1;  
    }
    
    public Cow(int a) {  
        age = a;  
    }  
    /** 
     * 成长,母牛年龄+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 CowCount {  
    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(5));  
        }  
        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.grow();//每年都会成长                               
                Cow newCow = cow.produce();  
               
                if (newCow != null) {//看看当前年龄能否生产小牛  
                
                    cows.add(newCow);  //这里的编程技巧,cows是扩充的,用一个变量来控制下标  
                }  
               
            } 
            
           
        }  
        System.out.println("怪兽牧场"+year+"后的母牛数从"+init_cow_count+"头增长到"+cows.size()+"头。");  
    }  
}  
  //怪兽牧场20后的母牛数从1头增长到907头。我改动前的代码  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();//每年都会成长            改动后的 for (int j=0;j<cow_count;j++) {//每年都遍历一下牛棚中的所有牛  
            
                Cow cow = cows.get(j);  
                
                cow.grow();//每年都会成长      
                
                Cow newCow = cow.produce();  
               
                if (newCow != null) {//看看当前年龄能否生产小牛  
                
                    cows.add(newCow);  //这里的编程技巧,cows是扩充的,用一个变量来控制下标  
                }  
                     
            } 在同样的for循环内, 只是变动了位置 , 结果为什么不一样,一个431,而另一个是907,不过我认为907,是对的,但431的答案,也没找出错误。