用javascript实现算兔子算法

前几天看到博客园有人用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);


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值