原生js实现鸡兔同笼
鸡兔同笼问题的数学原理
鸡兔同笼问题是一个经典的数学问题,通常描述为:已知笼子里有若干只鸡和兔,总共有h个头和f只脚,问鸡和兔各有多少只?
假设鸡的数量为x,兔的数量为y,可以列出以下方程组:

- 头的总数:x + y = h
- 脚的总数:2x + 4y = f
解这个方程组可以得到:

- 兔的数量:y = (f - 2h) / 2
- 鸡的数量:x = h - y
原生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(10, 28);
console.log(result); // 输出: { chickens: 6, rabbits: 4 }
代码说明
- 输入验证:函数首先检查头和脚的数量是否为正数,以及脚的数量是否为偶数(因为鸡和兔的脚数都是偶数)。
- 计算逻辑:根据数学公式计算兔子和鸡的数量。
- 结果验证:检查计算出的数量是否为非负数,否则返回无解。
扩展功能
如果需要更友好的用户交互,可以结合HTML实现一个简单的界面:
<!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="calculate()">计算</button>
<p id="result"></p>
<script>
function calculate() {
const heads = parseInt(document.getElementById("heads").value);
const feet = parseInt(document.getElementById("feet").value);
const result = solveChickenRabbit(heads, feet);
if (typeof result === "string") {
document.getElementById("result").textContent = result;
} else {
document.getElementById("result").textContent =
`鸡的数量:${result.chickens},兔的数量:${result.rabbits}`;
}
}
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>
注意事项
- 输入验证:确保用户输入的数据是合法的,避免负数或非数字输入。
- 无解情况:如果脚的数量不足以满足头的数量(例如10个头但只有10只脚),函数会返回无解。
- 扩展性:可以根据需要扩展功能,例如支持更多动物类型或更复杂的条件。






