母牛第 2 年会生一头母牛和一头公牛,第 3 年会生一头母牛,母牛的寿命 5 年,公牛的寿命 4 年,假如一开始牧场第一年只有一头母牛,问 n 年后有几头牛?
function getCattles(n = 1) {let arr = [];
/**
* 创立一头牛
* @param sex 0 母 1 公
* @constructor
*/
function Cattle(sex = 0) {
this.age = 1;
this.sex = sex;
this.dead = false;
this.addOneAge = function () {
this.age++;
// 母牛第二年生一头母牛,一头公牛
if (this.sex === 0 && this.age === 2) {arr.push(new Cattle(0), new Cattle(1))
}
// 母牛第三年生一头母牛
if (this.sex === 0 && this.age === 3) {arr.push(new Cattle(0))
}
// 公牛寿命 4 岁
if (this.sex === 1 && this.age === 5) {this.dead = true}
// 母牛寿命 5 岁
if (this.sex === 0 && this.age === 6) {this.dead = true}
}
}
let i = 1;
while (i <= n) {
// 第一年默认存在一头母牛
if (i === 1) {arr.push(new Cattle(0));
} else {
const length = arr.length;
for (let i = 0; i < length; i++) {arr[i].addOneAge();}
}
arr = arr.filter(item => !item.dead);
i++;
}
return arr.length;
}