原生js实现鸡兔同笼
鸡兔同笼问题简介
鸡兔同笼是一个经典的数学问题,通常描述为:已知笼子里有若干只鸡和兔,共有头的数量和脚的数量,求鸡和兔各有多少只。假设鸡有2只脚,兔有4只脚。
解决思路
通过数学方程求解:
- 设鸡的数量为
x,兔的数量为y。 - 头的总数方程为:
x + y = heads。 - 脚的总数方程为:
2x + 4y = feet。 - 解方程组可以得出鸡和兔的数量。
实现代码
以下是一个用原生 JavaScript 实现的鸡兔同笼问题解法:

function solveChickenRabbit(heads, feet) {
// 检查输入是否合法
if (heads <= 0 || feet <= 0 || feet % 2 !== 0 || feet < 2 * heads || feet > 4 * heads) {
return "无解或输入不合法";
}
// 解方程
const rabbits = (feet - 2 * heads) / 2;
const chickens = heads - rabbits;
// 检查解是否为非负整数
if (chickens >= 0 && rabbits >= 0 && Number.isInteger(chickens) && Number.isInteger(rabbits)) {
return {
chickens: chickens,
rabbits: rabbits
};
} else {
return "无解";
}
}
// 示例用法
const result = solveChickenRabbit(10, 28); // 10个头,28只脚
console.log(result); // 输出: { chickens: 6, rabbits: 4 }
代码说明
- 输入验证:检查头的数量、脚的数量是否合法(如脚的数量必须是偶数,且不能小于
2 * heads或大于4 * heads)。 - 方程求解:通过数学公式直接计算兔和鸡的数量:
- 兔的数量
rabbits = (feet - 2 * heads) / 2。 - 鸡的数量
chickens = heads - rabbits。
- 兔的数量
- 结果验证:确保鸡和兔的数量为非负整数,否则返回“无解”。
示例测试
console.log(solveChickenRabbit(10, 28)); // { chickens: 6, rabbits: 4 }
console.log(solveChickenRabbit(5, 16)); // { chickens: 2, rabbits: 3 }
console.log(solveChickenRabbit(7, 20)); // { chickens: 4, rabbits: 3 }
console.log(solveChickenRabbit(3, 10)); // "无解或输入不合法"
注意事项
- 如果脚的数量不满足逻辑条件(如脚数小于最小可能值
2 * heads或大于最大可能值4 * heads),会返回“无解”。 - 脚的数量必须是偶数,否则无解。






