js实现鸡兔同笼实验
实现思路
鸡兔同笼问题是一个经典的数学问题,通常描述为:已知笼子里有若干只鸡和兔,共有x个头和y只脚,求鸡和兔的数量。解决该问题的核心是建立二元一次方程组。
数学公式
设鸡的数量为 chickens,兔的数量为 rabbits,根据题意可得以下方程组:
- 头的总数:$chickens + rabbits = heads$
- 脚的总数:$2 \times chickens + 4 \times rabbits = legs$
解方程组后得到:
- $rabbits = (legs - 2 \times heads) / 2$
- $chickens = heads - rabbits$
代码实现
以下是一个完整的JavaScript函数,用于计算鸡和兔的数量:
function solveChickenRabbit(heads, legs) {
// 检查输入是否合法
if (legs < 2 * heads || legs > 4 * heads || legs % 2 !== 0) {
return "无解,输入数据不合法";
}
const rabbits = (legs - 2 * heads) / 2;
const chickens = heads - rabbits;
// 检查结果是否为非负整数
if (rabbits >= 0 && chickens >= 0) {
return {
chickens: chickens,
rabbits: rabbits
};
} else {
return "无解,计算结果为负数";
}
}
// 示例调用
const result = solveChickenRabbit(35, 94);
console.log(result); // 输出: { chickens: 23, rabbits: 12 }
输入验证
函数会先检查输入是否满足以下条件:
- 脚的数量至少为头的数量的2倍(全是鸡)。
- 脚的数量不超过头的数量的4倍(全是兔)。
- 脚的数量必须是偶数(因为鸡和兔的脚数都是偶数)。
输出结果
函数返回一个对象,包含鸡和兔的数量。如果输入数据不合法或计算结果为负数,则返回相应的错误提示。
扩展应用
可以将此函数集成到网页中,通过HTML表单让用户输入头和脚的数量,然后动态显示计算结果。以下是一个简单的HTML示例:
<!DOCTYPE html>
<html>
<head>
<title>鸡兔同笼计算器</title>
</head>
<body>
<h1>鸡兔同笼计算器</h1>
<form id="calculator">
<label for="heads">头的总数:</label>
<input type="number" id="heads" required><br>
<label for="legs">脚的总数:</label>
<input type="number" id="legs" required><br>
<button type="submit">计算</button>
</form>
<div id="result"></div>
<script>
document.getElementById('calculator').addEventListener('submit', function(e) {
e.preventDefault();
const heads = parseInt(document.getElementById('heads').value);
const legs = parseInt(document.getElementById('legs').value);
const result = solveChickenRabbit(heads, legs);
const resultDiv = document.getElementById('result');
if (typeof result === 'string') {
resultDiv.textContent = result;
} else {
resultDiv.innerHTML = `鸡的数量: ${result.chickens}<br>兔的数量: ${result.rabbits}`;
}
});
function solveChickenRabbit(heads, legs) {
if (legs < 2 * heads || legs > 4 * heads || legs % 2 !== 0) {
return "无解,输入数据不合法";
}
const rabbits = (legs - 2 * heads) / 2;
const chickens = heads - rabbits;
if (rabbits >= 0 && chickens >= 0) {
return {
chickens: chickens,
rabbits: rabbits
};
} else {
return "无解,计算结果为负数";
}
}
</script>
</body>
</html>
注意事项
- 输入的头和脚的数量必须为正整数。
- 脚的数量必须是偶数,否则无法得到整数解。
- 如果计算结果为负数或非整数,说明输入数据不合法。







