代码:
public class Rabbit2 {
public static void main(String[] args) {
Rabbit2 rabbit2 = new Rabbit2();
for (int i = 0; i < 10; i++) {
System.out.println(i + ":\t" + rabbit2.getStandAnswer(i) + "\t," + rabbit2.getRst(i) + ",\t Real count:" + rabbit2.getRst(i) * 2);
// rabbit2.getRst(i);
}
}
private int getStandAnswer(int month) {
if (month == 0 || month == 1) {
return 1;
}
return getStandAnswer(month - 1) + getStandAnswer(month - 2);
}
public int getRst(int month) {
int age0 = 0;
int age1 = 0;
int age2 = 0;
age0 = getAge0(month);
age1 = getAge1(month);
age2 = getAge2(month);
int count = age0 + age1 + age2;
// System.out.println(month + ":\t" + age0 + ",\t" + age1 + ",\t" + age2 + ".\t" + count);
return count;
}
private int getAge2(int month) {
if (month < 0) {
return 0;
}
if (month == 0 || month == 1) {
return 0;
}
return getAge1(month - 1) + getAge2(month - 1);
}
private int getAge0(int month) {
if (month == 0) {
return 1;
}
if (month < 0) {
return 0;
}
if (month == 1) {
return 0;
}
return getAge2(month);
}
private int getAge1(int month) {
if (month < 0) {
return 0;
}
if (month == 0) {
return 0;
}
if (month == 1) {
return 1;
}
return getAge0(month - 1);
}
}
输出答案:
0: 1 ,1, Real count:2
1: 1 ,1, Real count:2
2: 2 ,2, Real count:4
3: 3 ,3, Real count:6
4: 5 ,5, Real count:10
5: 8 ,8, Real count:16
6: 13 ,13, Real count:26
7: 21 ,21, Real count:42
8: 34 ,34, Real count:68
9: 55 ,55, Real count:110