题解 | #统计每个月兔子的总数#
统计每个月兔子的总数
http://www.nowcoder.com/practice/1221ec77125d4370833fd3ad5ba72395
//每个月的成年兔子 = 上个月的成年兔子 + 上个月2月小兔子
//每个月的1月兔子 = 本月成年兔子
//每个月的2月兔子 = 上个月的1月兔子
//定义3个数组,rabbitParent、rabbitChild1、rabbitChild2分别代表成年兔子、1月兔子、2月兔子
// rabbitParent[i] = rabbitParent[i-1] + rabbitChild2[i-1]
// rabbitChild1[i] = rabbitParent[i]
// rabbitChild2[i] = rabbitChild1[i-1]
// 代入化简
// rabbitParent[i] = rabbitParent[i-1] + rabbitParent[i-2]
// rabbitChild1[i] = rabbitParent[i]
// rabbitChild2[i] = rabbitChild1[i-1] = rabbitParent[i-1]
function getRabbitNum(month){
let rabbitParent=[0,0,1];
let rabbitChild1=[1,0,1];
let rabbitChild2=[0,1,0];
for(let i = 3;i < month;i++){
rabbitParent.push(rabbitParent[i-1] + rabbitParent[i-2])
rabbitChild1.push(rabbitParent[i])
rabbitChild2.push(rabbitParent[i-1])
}
let result = (rabbitParent[month-1] || 0) + (rabbitChild1[month-1] || 0) +(rabbitChild2[month-1] || 0)
return result;
}
let line
while(line=parseInt(readline())){
console.log(getRabbitNum(line))
}