有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
public class RabbitNum {
private static final int BASE_NUM = 2;
/**
* 递归
*
* @param dayNum
* @return
*/
public int getRabbitNum2(int dayNum) {
int sum = 0;
if (dayNum < 1) {
return sum;
}
for (int i = 1; i <= dayNum; i++) {
if (i == 1 || i == 2) {
sum = BASE_NUM;
} else {
sum = getRabbitNum2(dayNum - 1) + getRabbitNum2(dayNum - 2);
}
}
return sum;
}
/**
* 迭代
*
* @param dayNum
* @return
*/
public int getRabbitNum1(int dayNum) {
int currentNum = 0;
int preveOne = 0;
int preveTwo = 0;
if (dayNum < 1) {
return currentNum;
}
if (dayNum == 1 || dayNum == 2) {
currentNum = BASE_NUM;
return currentNum;
}
currentNum = BASE_NUM;
preveOne = currentNum;
preveTwo = currentNum;
for (int i = 3; i <= dayNum; i++) {
currentNum = preveOne + preveTwo;
preveTwo = preveOne;
preveOne = currentNum;
}
return currentNum;
}
public static void main(String[] args) {
RabbitNum rabbit = new RabbitNum();
System.out.println(rabbit.getRabbitNum2(4));
System.out.println(rabbit.getRabbitNum1(4));
}