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

如何修正递归实现的两整数闭区间求和Java代码的错误

问题修正方案

你的代码存在两处关键错误,导致计算结果偏离预期:

  1. 基准条件错误:
    当start == end时,你返回start + end,相当于把同一个数重复加了两次。比如参数都是6时,正确结果应该是6,但你的代码返回12,直接导致后续递归的总和偏大。

  2. start > end分支重复累加:
    当start > end时,你返回end + sumInt(end, start),这里额外加了一次end,但sumInt(end, start)本身已经会把end纳入求和范围,造成了重复计算。

修正后的代码如下:

public static int sumInt(int start, int end) {
    // 基准条件:两数相等时返回该数本身
    if (start == end) {
        return start;
    } 
    // start小于end时,累加当前start后递归计算start+1到end的和
    else if (start < end) {
        return start + sumInt(start + 1, end);
    } 
    // start大于end时,直接递归调用交换参数后的方法,无需额外累加
    else {
        return sumInt(end, start);
    }
}

验证结果:

  • 输入sumInt(2,6):计算过程为2+3+4+5+6=20,返回正确。
  • 输入sumInt(6,2):会直接调用sumInt(2,6),同样返回20,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:15:15