本帖最后由 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;
- }
-
- }
复制代码
我真的不会递归~!!!
|
|