如何让这段JavaScript递归函数正常运行?
问题分析与修复方案
原代码的问题
- 递归逻辑未启动:
runString内部定义了loop递归函数,但从未调用它,导致整个打印逻辑完全没执行。 - 最后一个字符未打印:终止条件里只输出结束提示,没有打印字符串的最后一位字符。
- 多余的
console.log包裹:runString没有返回值,用console.log(runString(str1))调用会额外输出undefined。
修复后的代码
let str1 = 'gggGGG'; function runString(str) { let n = 0; function loop(str, currentIndex) { // 打印当前索引对应的字符 console.log(str[currentIndex]); // 到达最后一位时输出结束提示并终止递归 if (currentIndex === str.length - 1) { console.log('This is the end'); return; } // 递归调用,索引自增 loop(str, currentIndex + 1); } // 启动递归流程 loop(str, n); } // 直接调用函数执行打印 runString(str1);
关键修改点
- 在
runString内部添加loop(str, n)调用,启动递归逻辑,这是解决无输出的核心。 - 调整递归逻辑:先打印当前字符再判断终止条件,确保最后一位字符被输出。
- 移除多余的
console.log包裹,直接调用runString(str1),避免额外输出undefined。
内容的提问来源于stack exchange,提问作者No One
相关产品推荐
相关产品推荐

