You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在while循环中展示全部步骤:Collatz猜想项目开发问题

Collatz猜想项目代码修正方案

原代码核心问题

  • 从输入框获取的数值为字符串类型,未转换为数字格式,可能引发运算逻辑异常
  • 每次循环直接覆盖结果区域内容,未存储中间运算数值,无法展示完整流程
  • 仅在奇数运算分支打印日志,偶数分支的中间数值未被记录
  • 初始输入的原始数值未被纳入运算流程展示范围

修正后完整代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Collatz猜想计算器</title>
    <script>
        function calcCollatz() {
            const inputVal = document.getElementById('num').value.trim();
            // 校验输入是否为正整数
            if (!/^[1-9]\d*$/.test(inputVal)) {
                document.getElementById('result').innerHTML = "请输入有效的正整数";
                return;
            }
            let currentNum = parseInt(inputVal);
            // 存储所有运算步骤,初始值加入数组
            const stepList = [currentNum];
            let stepCount = 0;
            while (currentNum !== 1) {
                if (currentNum % 2 === 0) {
                    currentNum = currentNum / 2;
                } else {
                    currentNum = currentNum * 3 + 1;
                }
                stepList.push(currentNum);
                stepCount++;
            }
            // 拼接输出内容,包含全步骤和总步数
            document.getElementById('result').innerHTML = `
                运算全步骤:${stepList.join(' → ')}<br>
                总运算步数:${stepCount}
            `;
        } 
    </script>
</head>
<body>
    <form method="post">
        <small>输入数字:</small>
        <input type="number" id="num" name="num" min="1" />
        <input type="button" value="计算" onclick="calcCollatz()" name="calcBtn" />
        <div style="margin-top: 10px; line-height: 1.5;" id="result"></div>
    </form>
</body>
</html>

运行效果说明

输入任意正整数点击计算后,会完整展示从初始值到1的所有运算过程数值,同时显示总运算步数,额外增加了输入合法性校验,避免非正整数输入引发的逻辑错误。

内容的提问来源于stack exchange,提问作者Nick Sutterland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:42:02