黑马程序员技术交流社区

标题: 你用递归来写 [打印本页]

作者: pengbeilin    时间: 2015-8-24 14:10
标题: 你用递归来写
本帖最后由 pengbeilin 于 2015-8-24 16:16 编辑

  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.util.ListIterator;

  4. /**
  5. *
  6. */

  7. /**
  8. * 一对兔子过3个月就可以生一对兔子(一对雌雄),接下的每一个月都可以生一对兔子(一对雌雄),
  9. * 然后新生的每对兔子过3个月也可以生兔子
  10. * 问:13个月后有多少对兔子
  11. * @author Administrator
  12. *思路:
  13. *1 我不知道用递归怎么写,写了个循环
  14. *2 首先创建兔子对象,定义一个 age (我们这里是以月做为单位),构造函数就是一个参数 age
  15. *3 每对兔子都不同对象,我这里用ArrayList 存储兔子对象
  16. *4 最开始只有一对兔子 那我们就往里面存一个兔子
  17. *5 用for循环  迭代集合 每过一个月就迭代一次
  18. *6 迭代每个对象的时候先用setAge修改兔子的age ,然后getAge获取兔子
  19. *        如果兔子age>=3 那就再往集合中添加一个兔子对象
  20. */
  21. public class tuzi {

  22.         /**
  23.          * @param args
  24.          */
  25.         public static void main(String[] args) {
  26.                 // TODO Auto-generated method stub
  27.                 int n =13;//月份
  28.                 ArrayList<tuziBB> arr = new ArrayList<tuziBB>();
  29.                 arr.add(new tuziBB(0));//存了一对兔子
  30.                 //每过一个月 迭代一次集合
  31.                 for (int i = 0; i < n; i++) {
  32.                         //这里用的是ListIterator迭代器, 因为迭代的时候要往集合中添加元素
  33.                         ListIterator<tuziBB> it = arr.listIterator();
  34.                         while(it.hasNext()){
  35.                                 tuziBB tzb = it.next();
  36.                                 tzb.setAge(tzb.getAge()+1);//兔子age+1
  37.                                 //如果兔子age>=3 那么就可以生一对小兔子
  38.                                 if(tzb.getAge()>=3){
  39.                                         it.add(new tuziBB(0));
  40.                                 }
  41.                         }
  42.                 }
  43.                 System.out.println(arr.size());//13个月后兔子的总数
  44.         }
  45.         
  46. }
  47. //兔子对象
  48. class tuziBB{
  49.         private int age=0;
  50.         tuziBB(int age){
  51.                 this.age = age;
  52.         }
  53.         public int getAge() {
  54.                 return age;
  55.         }
  56.         public void setAge(int age) {
  57.                 this.age = age;
  58.         }
  59.         
  60. }
复制代码

我真的不会递归~!!!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2