js实现鸡兔同笼实验
鸡兔同笼问题的数学原理
鸡兔同笼问题是一个经典的数学问题,通常描述为:已知笼子里有若干只鸡和兔,总共有x个头和y只脚,问鸡和兔各有多少只。假设鸡有2只脚,兔有4只脚,可以通过以下方程求解:
设鸡的数量为 chickens,兔的数量为 rabbits,则:
- 头的总数:
chickens + rabbits = heads - 脚的总数:
2 * chickens + 4 * rabbits = feet
解方程组可以得到:
rabbits = (feet - 2 * heads) / 2chickens = heads - rabbits
JavaScript实现代码
以下是一个完整的JavaScript实现,包括输入验证和结果输出:
function solveChickenRabbit(heads, feet) {
// 验证输入是否有效
if (heads <= 0 || feet <= 0) {
return "头和脚的数量必须为正数";
}
if (feet % 2 !== 0) {
return "脚的数量必须是偶数";
}
const rabbits = (feet - 2 * heads) / 2;
const chickens = heads - rabbits;
// 验证结果是否合理
if (rabbits < 0 || chickens < 0) {
return "无解,请检查输入的头和脚数量";
}
return {
chickens: chickens,
rabbits: rabbits
};
}
// 示例用法
const result = solveChickenRabbit(35, 94);
if (typeof result === 'object') {
console.log(`鸡的数量:${result.chickens}, 兔的数量:${result.rabbits}`);
} else {
console.log(result);
}
代码解析
-
输入验证:
- 检查头和脚的数量是否为正数。
- 检查脚的数量是否为偶数(因为鸡和兔的脚数都是偶数)。
-
计算逻辑:
- 根据数学公式计算兔和鸡的数量。
- 检查计算结果是否为非负整数。
-
输出结果:
- 返回一个包含鸡和兔数量的对象,或错误提示信息。
测试用例
可以通过以下测试用例验证代码的正确性:
console.log(solveChickenRabbit(35, 94)); // { chickens: 23, rabbits: 12 }
console.log(solveChickenRabbit(10, 26)); // { chickens: 7, rabbits: 3 }
console.log(solveChickenRabbit(10, 25)); // "脚的数量必须是偶数"
console.log(solveChickenRabbit(0, 0)); // "头和脚的数量必须为正数"
console.log(solveChickenRabbit(10, 10)); // "无解,请检查输入的头和脚数量"
扩展功能
如果需要从用户输入动态获取数据,可以使用浏览器或Node.js的输入方法。例如,在浏览器中:

<!DOCTYPE html>
<html>
<head>
<title>鸡兔同笼问题</title>
</head>
<body>
<h1>鸡兔同笼问题求解</h1>
<label for="heads">头的总数:</label>
<input type="number" id="heads" min="1"><br>
<label for="feet">脚的总数:</label>
<input type="number" id="feet" min="1"><br>
<button onclick="solve()">计算</button>
<p id="result"></p>
<script>
function solve() {
const heads = parseInt(document.getElementById('heads').value);
const feet = parseInt(document.getElementById('feet').value);
const result = solveChickenRabbit(heads, feet);
const output = document.getElementById('result');
if (typeof result === 'object') {
output.textContent = `鸡的数量:${result.chickens}, 兔的数量:${result.rabbits}`;
} else {
output.textContent = result;
}
}
function solveChickenRabbit(heads, feet) {
if (heads <= 0 || feet <= 0) {
return "头和脚的数量必须为正数";
}
if (feet % 2 !== 0) {
return "脚的数量必须是偶数";
}
const rabbits = (feet - 2 * heads) / 2;
const chickens = heads - rabbits;
if (rabbits < 0 || chickens < 0) {
return "无解,请检查输入的头和脚数量";
}
return {
chickens: chickens,
rabbits: rabbits
};
}
</script>
</body>
</html>
注意事项
- 输入验证:确保输入的头和脚数量合理,避免负数或非整数输入。
- 无解情况:当计算结果为负数时,说明输入的数据无解。
- 扩展性:可以根据需要扩展为更复杂的交互界面或与其他系统集成。






