JavaScript实现两数区间整数求和代码异常排查咨询
代码存在的问题
- 核心功能逻辑错误
你当前的代码要实现的是区间内所有整数求和,但循环体内执行的是count += 1,本质是在统计区间整数的个数,不是累加数值。比如输入a=1、b=3,预期结果是1+2+3=6,你的代码只会返回3,完全不符合需求。 - 代码冗余度高
a > b和a < b两个分支的逻辑完全重复,没有必要写两套重复的判断和循环代码,可先统一确定区间的上下限再执行求和逻辑。 - 变量使用方面没有问题:你用
let在分支块内声明的greaterNum、lesserNum都是块级作用域变量,仅在对应分支内生效,不存在全局变量污染的问题。
修复方案
你可以直接用等差数列求和公式实现,既不需要循环性能更高,也能避免逻辑错误:
function getSum( a,b ){ const min = Math.min(a, b) const max = Math.max(a, b) // 等差数列和 = 项数 * (首项 + 末项) / 2 return (max - min + 1) * (min + max) / 2 }
如果要保留你原来的循环写法,只需要把循环体内的count += 1改成count += lesserNum + 1即可运行正确。
内容的提问来源于stack exchange,提问作者DCoderT
相关产品推荐
相关产品推荐

