当前位置: 代码迷 >> J2SE >> 简单的有关问题一个
  详细解决方案

简单的有关问题一个

热度:122   发布时间:2016-04-24 01:18:01.0
简单的问题一个
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
要求输入月数可以显示本月的兔子数

------解决方案--------------------
这种是非正常做法,正常做法是递归,哥们。。。我都解释是模拟了。
Java code
import java.util.ArrayList;import java.util.List;class Rabbit{    int age;    public Rabbit(){        this.age=1;    }    public boolean createBaby(){        age++;        if(age>=3){            return true;        }        else{            return false;        }            }}public class Home implements Runnable{    static List<Rabbit> lr;    int countOfMonth = 0;    public Home(int com){        this.countOfMonth = com;        Rabbit r = new Rabbit();        lr = new ArrayList<Rabbit>();        lr.add(r);    }    @Override    public void run(){        int count=0;        while(count<countOfMonth){            System.out.println(lr.size());            try {                Thread.sleep(1000);                count++;            } catch (InterruptedException e) {                e.printStackTrace();            }            int newBabyCount=0;            for(Rabbit r:lr){                if(r.createBaby()){                    newBabyCount++;                }            }            for(int i=1;i<=newBabyCount;i++){//不好意思,刚才数据并发了。                lr.add(new Rabbit());            }        }    }    public static void main(String args[]){        Home h = new Home(10);        new Thread(h).start();    }}
------解决方案--------------------
Java code
package com;import java.util.Scanner;public class Rabbit {        public static void main(String[] args) {        Rabbit rabbit = new Rabbit();//        for(int i = 1; i <= 12; i++) {//            System.out.println(i +  ":" + rabbit.getRabbitCount(i));//        }        Scanner scanner = new Scanner(System.in);        System.out.print("请输入月数(当输入为0的时候结束):");        while(true) {            try {                String str = scanner.nextLine();                int x = Integer.parseInt(str);                if(x == 0) {                    //System.exit(0);                    break;                }                System.out.println(x +  ":" + rabbit.getRabbitCount(x));            } catch(Exception e) {                System.out.println("你输入的不是正整数");            }        }    }        public int getRabbitCount(int month) {        if(month < 1) {            throw new IllegalArgumentException();        }        if(month == 1 || month == 2) {            return 1;        } else {            return this.getRabbitCount(month - 1) + this.getRabbitCount(month - 2);        }    }}
  相关解决方案