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

如何将基于while循环的JavaScript猜数程序改写为递归实现?

递归实现随机数字查找

原代码通过while循环重复生成随机数直到匹配目标值,要改成递归版本,核心是把循环的状态(尝试次数)通过参数传递,同时明确递归的终止条件。

递归实现代码

const recursiveFind = (num, attempts = 1) => {
  const randomNumber = Math.round(Math.random() * 100000);
  if (randomNumber === num) {
    console.log(`It took ${attempts} attempts`);
    return;
  }
  recursiveFind(num, attempts + 1);
};

代码说明

  • 参数设计:attempts设为可选参数,默认值1,对应原代码中第一次生成随机数就算一次尝试的逻辑。
  • 终止条件:当生成的随机数等于目标数字num时,打印尝试次数并返回,结束递归调用链。
  • 递归逻辑:如果未匹配目标值,就递归调用自身,并将尝试次数加1传递下去,相当于while循环的一次迭代。

调用示例

和原函数用法一致:

recursiveFind(50000); // 查找数字50000,输出尝试次数

这个实现完全复刻了原代码的逻辑,只是把循环结构换成了递归结构,核心是利用参数传递来维护尝试次数的状态,避免了原循环中在同一作用域累加变量的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:54:23