黑马程序员技术交流社区
标题:
你用递归来写
[打印本页]
作者:
pengbeilin
时间:
2015-8-24 14:10
标题:
你用递归来写
本帖最后由 pengbeilin 于 2015-8-24 16:16 编辑
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
/**
*
*/
/**
* 一对兔子过3个月就可以生一对兔子(一对雌雄),接下的每一个月都可以生一对兔子(一对雌雄),
* 然后新生的每对兔子过3个月也可以生兔子
* 问:13个月后有多少对兔子
* @author Administrator
*思路:
*1 我不知道用递归怎么写,写了个循环
*2 首先创建兔子对象,定义一个 age (我们这里是以月做为单位),构造函数就是一个参数 age
*3 每对兔子都不同对象,我这里用ArrayList 存储兔子对象
*4 最开始只有一对兔子 那我们就往里面存一个兔子
*5 用for循环 迭代集合 每过一个月就迭代一次
*6 迭代每个对象的时候先用setAge修改兔子的age ,然后getAge获取兔子
* 如果兔子age>=3 那就再往集合中添加一个兔子对象
*/
public class tuzi {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int n =13;//月份
ArrayList<tuziBB> arr = new ArrayList<tuziBB>();
arr.add(new tuziBB(0));//存了一对兔子
//每过一个月 迭代一次集合
for (int i = 0; i < n; i++) {
//这里用的是ListIterator迭代器, 因为迭代的时候要往集合中添加元素
ListIterator<tuziBB> it = arr.listIterator();
while(it.hasNext()){
tuziBB tzb = it.next();
tzb.setAge(tzb.getAge()+1);//兔子age+1
//如果兔子age>=3 那么就可以生一对小兔子
if(tzb.getAge()>=3){
it.add(new tuziBB(0));
}
}
}
System.out.println(arr.size());//13个月后兔子的总数
}
}
//兔子对象
class tuziBB{
private int age=0;
tuziBB(int age){
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
复制代码
我真的不会递归~!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2