兔子问题,哪位高手能用递归做出来。。。 一对3对 , a couple, 没性别吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.uitl.*;class ACoupleOfRabbit{ int ageInMonth=0; static Vector allCouples=new Vector(); static Vector newBabies=new Vector(); public void newMonth(){ ageInMonth++; if(ageInMonth>=7){ if(ageInMonth-7)%4==0){ newBabies.add(new ACoupleOfRabbit()); } if(ageInMonth==25){ allCouples.remove(this); } } } public static void main(String[] args){ allCouples.add(new ACoupleOfRabbit()); for(int i=0;i<40;i++){ for(Enumeration e=allCouples.elements();e.hasMoreElements();){ ((ACoupleOfRabbit)e.nextElement()).newMonth(); } allCouples.addAll(newBabies); Babies.clear(); } } System.out.println(allCouples.size());} Sorry上面System.out.println,写错位置了 老兄 你的程序错误一大堆啊第一行就错了 import java.uitl.*; --> import java.util.*;> if(ageInMonth-7)%4==0){> Babies.clear(); 结果还是 0 ???不可能吧我的结果是 1636不知对不对 import java.util.ArrayList;import java.util.LinkedList;import java.util.Iterator;public class Problem{ private static final int totalWeek = 40; private static ArrayList allPig = new ArrayList(); public static void main(String[] args) { for (int i = 1; i <= totalWeek; i++) { allPig = new ArrayList(); allPig.add(new Pig()); hoggery(i); System.out.println("Week " + i + "--Total alive pigs: " + allPig.size() + " pairs."); } } private static void hoggery(int totalMonth) { //base case: if (totalMonth <= 0) return; //general case: LinkedList newLitter = new LinkedList(); for (Iterator itr = allPig.iterator(); itr.hasNext(); ) { ((Pig)itr.next()).grow(newLitter); } cleanDead(); allPig.addAll(newLitter); hoggery(totalMonth-1); } private static void cleanDead() { for (int i = 0; i < allPig.size(); ) { if ( ((Pig)allPig.get(i)).isDead() ) allPig.remove(i); else i++; } }}class Pig{ private final int lifeCycle = 25; private int age = 0; private boolean isDead = false; public boolean isDead() { return isDead; } protected void grow(LinkedList lst) { if (isDead) return; age++; if (age == lifeCycle) { isDead = true; return; } if (age == 7 || (age > 7 && age%4 == 3)) delivery(lst); } private void delivery(LinkedList lst) { for (int i = 0; i < 3; i++) lst.add(new Pig()); }} hayai(生命树) 太强了,历害 怎么在JTextArea中在不同的时间输出不同的内容 菜单栏怎么设置热键? 开发swing 的JFace插件哪里有下,for eclipse 如何远程调用EJB? 请问这是不是sun j2se的bug? jdbcVSjdbc:odbc桥,之间的区别 散分了:非科班的困惑 构造方法可以是static的吗?为什么? Win2000菜单的淡入淡出效果真是太好看了,你会吗? jdbc的问题!!一定给分!! 介绍几本 JAVA 安全的教程下载吧! 关于package的小问题
class ACoupleOfRabbit{
int ageInMonth=0;
static Vector allCouples=new Vector();
static Vector newBabies=new Vector();
public void newMonth(){
ageInMonth++;
if(ageInMonth>=7){
if(ageInMonth-7)%4==0){
newBabies.add(new ACoupleOfRabbit());
}
if(ageInMonth==25){
allCouples.remove(this);
}
}
} public static void main(String[] args){
allCouples.add(new ACoupleOfRabbit());
for(int i=0;i<40;i++){
for(Enumeration e=allCouples.elements();e.hasMoreElements();){
((ACoupleOfRabbit)e.nextElement()).newMonth();
}
allCouples.addAll(newBabies);
Babies.clear();
}
}
System.out.println(allCouples.size());
}
第一行就错了 import java.uitl.*; --> import java.util.*;
> if(ageInMonth-7)%4==0){
> Babies.clear(); 结果还是 0 ???
不可能吧我的结果是 1636
不知对不对
import java.util.LinkedList;
import java.util.Iterator;public class Problem
{
private static final int totalWeek = 40;
private static ArrayList allPig = new ArrayList();
public static void main(String[] args)
{
for (int i = 1; i <= totalWeek; i++)
{
allPig = new ArrayList();
allPig.add(new Pig());
hoggery(i);
System.out.println("Week " + i + "--Total alive pigs: " + allPig.size() + " pairs.");
}
}
private static void hoggery(int totalMonth)
{
//base case:
if (totalMonth <= 0)
return;
//general case:
LinkedList newLitter = new LinkedList();
for (Iterator itr = allPig.iterator(); itr.hasNext(); )
{
((Pig)itr.next()).grow(newLitter);
}
cleanDead();
allPig.addAll(newLitter);
hoggery(totalMonth-1);
}
private static void cleanDead()
{
for (int i = 0; i < allPig.size(); )
{
if ( ((Pig)allPig.get(i)).isDead() )
allPig.remove(i);
else
i++;
}
}}class Pig
{
private final int lifeCycle = 25;
private int age = 0;
private boolean isDead = false;
public boolean isDead()
{
return isDead;
}
protected void grow(LinkedList lst)
{
if (isDead)
return;
age++;
if (age == lifeCycle)
{
isDead = true;
return;
}
if (age == 7 || (age > 7 && age%4 == 3))
delivery(lst);
}
private void delivery(LinkedList lst)
{
for (int i = 0; i < 3; i++)
lst.add(new Pig());
}
}