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

如何用循环计算逐次递减上限的区间累加和?

实现rangeSum函数的正确方式

你的代码只完成了一轮区间累加,没处理y递减后重复执行累加的核心逻辑,所以达不到需求。我们需要通过两层循环来实现:外层循环控制y的递减,内层循环计算每一轮x到当前y的数值和。

正确代码实现

function rangeSum(x, y) {
    let sum = 0;
    // 外层循环:只要y不小于x,就继续执行累加流程
    while (y >= x) {
        // 内层循环:累加当前x到y的所有数值
        for (let i = x; i <= y; i++) {
            sum += i;
        }
        // 每轮累加完成后,y递减1
        y--;
    }
    return sum;
}

验证示例(rangeSum(0, 3))

执行流程如下:

  • 第一轮y=3:累加0+1+2+3,sum=6
  • 第二轮y=2:累加0+1+2,sum=6+3=9
  • 第三轮y=1:累加0+1,sum=9+1=10
  • 第四轮y=0:累加0,sum=10+0=10
  • 此时y递减为-1,小于x=0,循环结束,返回10,完全符合预期。

原代码问题说明

  • 仅用单个for循环,只计算了一次初始x到y的和,没有处理y递减后的重复累加逻辑
  • 末尾的sum += i + i--属于多余且逻辑错误的操作,会导致结果偏离预期
  • 循环变量i未用let声明,会变成全局变量,这是新手需要避免的不良习惯

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:04:58