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

递归实现n+(n-1)+…+1正常,Java迭代版本出错求排查及语法解释

迭代实现1到n求和的问题修复与解释

先解释s += n - 1的含义

s += n - 1是Java的复合赋值语法,完全等价于 s = s + (n - 1)——就是把当前求和变量s的数值,加上(n-1)的结果,再重新赋值给s。但你这里的问题是,每次循环都加同一个固定值,而不是随着循环递减的目标数值,这是求和错误的核心原因。

你的代码问题分析

  1. 变量名不一致:循环条件用了num,但求和逻辑用的是n,两个变量应该统一(比如都用n,因为n是用户输入的目标值)
  2. 累加逻辑错误:你每次循环都加固定的n-1,而不是依次加n、n-1、n-2...1这类递减的数,自然得不到正确的求和结果
  3. 循环条件逻辑不对:就算改成<= num,因为累加的是固定值,结果依然会偏离正确值

修复后的迭代代码

有两种常见的正确写法:

写法1:从1累加到n

// 假设s初始化为0,n是用户输入的正整数
int s = 0;
for (int i = 1; i <= n; i++) {
    s += i; // 每次累加当前的i,依次加1、2、3...n
}
return s;

写法2:从n累加到1

int s = 0;
for (int i = n; i >= 1; i--) {
    s += i; // 每次累加当前的i,依次加n、n-1、n-2...1
}
return s;

另外,如果追求效率,也可以直接用等差数列求和公式n*(n+1)/2,不需要循环,结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:04:56