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

JS入门求助:修正checkStr函数逻辑并实现条件递归调用

修正后的checkStr函数实现

原代码存在几个关键问题,导致递归逻辑失效:

  • 使用全局变量res存储匹配字符,递归时会累计之前的结果,无法正确统计新输入字符的出现次数
  • 循环变量i未声明,会成为全局变量,干扰递归中的循环执行
  • 递归调用时没有重新初始化统计状态,导致判断逻辑混乱

以下是修正后的代码:

const str = 'sssxxa';

function checkStr(targetStr, char) {
  // 每次调用重新统计当前字符的出现次数,避免全局变量污染
  let count = 0;
  // 声明循环变量i,避免全局作用域污染
  for (let i = 0; i < targetStr.length; i++) {
    if (targetStr[i] === char) {
      count++;
    }
  }

  if (count >= 2) {
    alert(`重复总数:${count}`);
  } else {
    alert('未找到足够重复的字符');
    // 递归调用,传入新输入的字符
    checkStr(targetStr, prompt('请重新输入要查找的字符:'));
  }
}

// 初始调用
checkStr(str, prompt('请输入要查找的字符:'));

关键修改说明

  • 移除全局变量res和count,改为在函数内部声明count,每次调用函数都会重新初始化,确保统计的是当前输入字符的出现次数
  • 循环变量i用let声明,限定在循环作用域内,避免递归时的变量冲突
  • 优化判断逻辑,直接用count统计次数,比拼接字符串更高效直观
  • 递归调用时明确提示用户输入,提升交互体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:52:04