前几天看到博客园有人用C#写了一个算兔子算法,于是心血来潮就试试用javascript实现
问题:一对小兔子一年后长成大兔子;一对大兔子每半年生一对小兔子。大兔子的繁殖期为4年,兔子的寿命是6年。假定第一年年初投放了一对小兔子,试编程计算,第n年末总共会有多少对兔子。n由键盘输入。(用递归哦,谢谢!)
算法如下:
var new_born = 2; //开始是一对
var age = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; //每个年龄(0.5-5.5)兔子的数目
var died = 0; //死兔子的数目
var time_limit = 7;
var time_begin = 0;
var count = 2; //开始是一对
function breed() {//繁殖
time_begin += 0.5; //半年后
died = age[10];//年龄是5.5的就要死了
//其他年龄的兔子都长大了
for (var i = age.length - 1; i > 0; i--) {
age[i] = age[i - 1];
}
//半年前出生的就是0.5岁
age[0] = new_born;
//又一批兔子出生 age[2]-age[9]段的兔子都可以生育
new_born = age[2] + age[3] + age[4] + age[5] + age[6] + age[7] + age[8] + age[9];
//现在可以统计半年后兔子的数目
count = count + new_born - died;
if ((time_limit - time_begin) <= 0) {
return;
}
breed(); //继续繁殖
}
breed(); //开始繁殖
document.write(count);