黑马程序员技术交流社区
标题: 不死神兔的题可不可以采用直接的思想做? [打印本页]
作者: flying81621 时间: 2017-2-25 23:02
标题: 不死神兔的题可不可以采用直接的思想做?
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
public class lianxi01 {
public static void main(String[] args) {
System.out.println("第1个月的兔子对数: 1");
System.out.println("第2个月的兔子对数: 1");
int f1 = 1, f2 = 1, f, M=24;
for(int i=3; i<=M; i++) {
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println("第" + i +"个月的兔子对数:"+f2);
}
}
}
这是标准解法,但这是根据结果找规律来做的,现在可不可以采用直接的思想来做,直接根据兔子生兔子的规律来做它?
作者: flying81621 时间: 2017-2-25 23:15
自己顶一下
作者: 香草芭芙 时间: 2017-2-26 14:01
[Java] 纯文本查看 复制代码
import java.util.ArrayList;
import java.util.ListIterator;
class Tuzi {
/**
* 0个月 - 小兔子 1个月 - 大兔子 2个月 - 生小兔子
*/
public int age;
}
public class Test07 {
public static void main(String[] args) {
ArrayList<Tuzi> arrayList = new ArrayList<Tuzi>();
Tuzi tuzi1 = new Tuzi();
Tuzi tuzi2 = new Tuzi();
arrayList.add(tuzi1);
arrayList.add(tuzi2);
int num = 12; // 12个月
for (int i = 0; i < num; i++) {
for (ListIterator<Tuzi> listIterator = arrayList.listIterator(); listIterator.hasNext();) {
Tuzi tuzi = listIterator.next();
if (tuzi.age > 1) {
listIterator.add(new Tuzi());
}
}
for (Tuzi tuzi : arrayList) {
tuzi.age++;
}
}
/** 一年内繁殖成多少对兔子? */
System.out.printf("一共%d只兔子\n", arrayList.size());
System.out.printf("一年内繁殖成%d对兔子\n", arrayList.size() / 2);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |