JAVA编程之古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子
2013-11-21 21:46
274 查看
问题是这样的:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子, 假如兔子都不死,问每个月的兔子总数为多少?
这个问题相信大家已经不在陌生了。很多博客里都有各种不同的解答方法。
最多的方法就是先列出最初几个月的兔子对数(注意是对数,不是个数)。如下所示:
我要介绍的是,不知道这个规律的前提进行编程。
思路是这样的:
①、有一个笼子,我们逐一取出笼子中的一对兔子(当然这两只兔子的年龄是相同的)。
②、若它们的年龄大于或等于三个月,则生出一对小兔子。
③、将这两对兔子放入笼中。
④、所有兔子的年龄加1(上面出生的兔子年龄不加)。
⑤、5查看此时笼子中的兔子数量。
可能文字上理解起来会比较困难。相信你一看代码就明白了。下面是整个代码:
我们可以发现,这样的繁殖速度实在是在惊人了。当繁殖月数为36月时,程序将会因为JVM内存不足而终止执行。
本文出自 “一个风向” 博客,请务必保留此出处http://lanffy.blog.51cto.com/6452125/1329776
这个问题相信大家已经不在陌生了。很多博客里都有各种不同的解答方法。
最多的方法就是先列出最初几个月的兔子对数(注意是对数,不是个数)。如下所示:
1,1,2,3,5,8,13,21,34....然后观察数据的规律,从而得出这样一个结论:从第三个月开始,兔子对数等于前面两个月的兔子对数之和。看到这里相信你已经有写出代码的思路了。这里也不再详细说明了。
我要介绍的是,不知道这个规律的前提进行编程。
思路是这样的:
①、有一个笼子,我们逐一取出笼子中的一对兔子(当然这两只兔子的年龄是相同的)。
②、若它们的年龄大于或等于三个月,则生出一对小兔子。
③、将这两对兔子放入笼中。
④、所有兔子的年龄加1(上面出生的兔子年龄不加)。
⑤、5查看此时笼子中的兔子数量。
可能文字上理解起来会比较困难。相信你一看代码就明白了。下面是整个代码:
package com.test; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子, 假如兔子都不死,问每个月的兔子总数为多少?<br/> * @author Administrator */ public class Rabbit { public static void main(String[] args) { List list = new ArrayList(); list.add(new littleRabbit()); for (int k = 1; k <= 20; k++) { for (int j = 0; j < list.size(); j++) { littleRabbit rabbit = (littleRabbit) list.get(j); int age = rabbit.getAge(); if (age >= 3) { list.add(new littleRabbit()); } age++; rabbit.setAge(age); } System.out.println("第" + k + "个月有" + list.size() + "对兔子,一共"+list.size()*2+"只。"); // System.out.print(list.size()+","); } } } class littleRabbit { private int age = 1; public void growUp() { this.age++; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }运行程序会得到下面的结果:
第1个月有1对兔子,一共2只。 第2个月有1对兔子,一共2只。 第3个月有2对兔子,一共4只。 第4个月有3对兔子,一共6只。 第5个月有5对兔子,一共10只。 第6个月有8对兔子,一共16只。 第7个月有13对兔子,一共26只。 第8个月有21对兔子,一共42只。 第9个月有34对兔子,一共68只。 第10个月有55对兔子,一共110只。 第11个月有89对兔子,一共178只。 第12个月有144对兔子,一共288只。 第13个月有233对兔子,一共466只。 第14个月有377对兔子,一共754只。 第15个月有610对兔子,一共1220只。 第16个月有987对兔子,一共1974只。 第17个月有1597对兔子,一共3194只。 第18个月有2584对兔子,一共5168只。 第19个月有4181对兔子,一共8362只。 第20个月有6765对兔子,一共13530只。
我们可以发现,这样的繁殖速度实在是在惊人了。当繁殖月数为36月时,程序将会因为JVM内存不足而终止执行。
本文出自 “一个风向” 博客,请务必保留此出处http://lanffy.blog.51cto.com/6452125/1329776
相关文章推荐
- JAVA编程之古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子
- 问题十九: 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- java编译古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 古典问题: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔
- 斐波那契数列。古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问每个月的兔子总数为多少?
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 程序1:题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 【程序1】 TestRabbit.java 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, //假如兔子都不死,问每个月的兔子总数为多少?
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)