JS递归实现数字累加出现操作反转、返回undefined如何解决?
JavaScript递归累加问题修复
错误原因
- 递归调用分支未添加返回语句:在
count <= 3的逻辑分支中,仅执行了sum(total, count)调用,没有将递归的执行结果返回,导致终止条件返回的累加值无法层层传递到最外层调用,最终返回undefined - 终止条件不匹配需求:当前代码仅设置了
count <= 3的判断,只能实现1到3的累加,要完成1到10的累加需要调整终止判断阈值
修复代码
// 适配1到10累加的修复版本 function sum(total, count){ if(count <= 10){ total += count; count++; // 新增return返回递归调用结果 return sum(total, count); }else{ return total; } } var result = sum(0, 1); console.log(result); // 输出55,为1到10的累加结果
简化递归写法
也可以用单参数实现更简洁的递归逻辑:
function sum(n) { // 终止条件:n为1时直接返回1 if(n === 1) return 1; return n + sum(n - 1); } console.log(sum(10)); // 输出55
内容的提问来源于stack exchange,提问作者Kaleab Alemayehu
相关产品推荐
相关产品推荐

