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

如何锁定猜数字游戏的最优上下限?附HTML示例Fiddle

猜数字游戏:锁定最优上下限解决方案

我完全get到你的需求啦——就是要让猜数字游戏里的上下限始终锁定最接近目标值的最优边界:比如目标是50,已经摸到了48(比目标小的最大数),再猜47这种更小的数时,下限绝对不能往下掉;上限也是同理,摸到比目标大的最小数后,再猜更大的数也不会让上限升高,对吧?

核心逻辑调整思路

原来的代码里,只要猜的数比目标小就直接更新下限,比目标大就直接更新上限,这就导致了边界值被“拉远”的问题。我们只需要给上下限的更新加一层判断:

  • 下限更新条件:当前猜测数 < 目标值,且这个数比已记录的下限更大(也就是更接近目标)
  • 上限更新条件:当前猜测数 > 目标值,且这个数比已记录的上限更小(也就是更接近目标)

修改后的关键代码示例

下面是调整后的核心JavaScript逻辑(对应你游戏里的猜测判断部分):

// 假设初始化的上下限和目标值
let toGuess = 50;
let lower = 0;
let upper = 100;
const feedback = document.getElementById('feedback');

function checkGuess() {
  const guessInput = document.getElementById('guessInput');
  const guess = parseInt(guessInput.value);

  if (isNaN(guess)) {
    feedback.textContent = "请输入有效的数字哦!";
    return;
  }

  if (guess < toGuess) {
    // 只有当猜测数比当前下限大时,才更新下限
    if (guess > lower) {
      lower = guess;
    }
    feedback.textContent = `太小啦!当前最优范围:${lower} - ${upper}`;
  } else if (guess > toGuess) {
    // 只有当猜测数比当前上限小时,才更新上限
    if (guess < upper) {
      upper = guess;
    }
    feedback.textContent = `太大啦!当前最优范围:${lower} - ${upper}`;
  } else {
    feedback.textContent = `恭喜你猜对了!目标数字就是${toGuess}!`;
  }

  guessInput.value = "";
}

效果验证

比如目标是50:

  1. 第一次猜48 → 下限更新为48,提示“太小啦!当前最优范围:48 - 100”
  2. 再猜47 → 因为47不大于当前下限48,所以下限保持48不变,提示还是“太小啦!当前最优范围:48 - 100”
  3. 第一次猜52 → 上限更新为52,提示“太大啦!当前最优范围:0 - 52”
  4. 再猜55 → 因为55不小于当前上限52,所以上限保持52不变,提示还是“太大啦!当前最优范围:0 - 52”

这样就完美实现了锁定最接近目标的最优上下限的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:38:38