最近在学python,其中有这样一道题
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
没有做出来,先用笔在纸上算的时候也是稀里糊涂的。后来想办法建模运算,毕竟Java语言号称模拟自然界,向来是有办法解决的,过程中遇到了很多问题,也有一些思考,现在把我认知到的内容分享给大家,希望对大家有帮助
第一,分解问题,大问题转换为小问题,小问题用编程方式解决出来。
第二,写注释,按照注释的内容构建自己的类。
好了,下面上代码
第一个类 helo.java
import java.util.ArrayList;
/**
* Created by Y_a on 2016/12/8.
*/
public class helo {
public static void main(String[] args) {
Tuzi hehe = new Tuzi(0);
ArrayList<Tuzi> tuziwo = new ArrayList<Tuzi>();
tuziwo.add(hehe);
for (int i = 1; i < 20; i++) {
//年龄大于3的兔子生小兔子
for (int j = 0; j < tuziwo.size(); j++) {
if (tuziwo.get(j).isAgeBigger(i)) {
//把小兔子加到窝里面去
tuziwo.add(new Tuzi(i));
}
}
}
System.out.print(tuziwo.size());
}
}
第二个类 Tuzi.java
/**
* Created by Y_a on 2016/12/9.
*/
public class Tuzi {
int birthday = 0;
public Tuzi(int birthday) {
this.birthday = birthday;
}
public boolean isAgeBigger(int currentDay) {
return (currentDay - birthday >= 2) ? true : false;
}
}
结果图