当前位置:首页 > JavaScript

原生js实现鸡兔同笼

2026-01-31 11:00:50JavaScript

鸡兔同笼问题的数学原理

鸡兔同笼问题是一个经典的数学问题,通常描述为:已知笼子里有若干只鸡和兔,总共有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 }

代码说明

  1. 输入验证:函数首先检查头和脚的数量是否为正数,以及脚的数量是否为偶数(因为鸡和兔的脚数都是偶数)。
  2. 计算逻辑:根据数学公式计算兔子和鸡的数量。
  3. 结果验证:检查计算出的数量是否为非负数,否则返回无解。

扩展功能

如果需要更友好的用户交互,可以结合HTML实现一个简单的界面:

原生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="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>

注意事项

  1. 输入验证:确保用户输入的数据是合法的,避免负数或非数字输入。
  2. 无解情况:如果脚的数量不足以满足头的数量(例如10个头但只有10只脚),函数会返回无解。
  3. 扩展性:可以根据需要扩展功能,例如支持更多动物类型或更复杂的条件。

标签: js
分享给朋友:

相关文章

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…