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

Java递归实现区间数字连续减法遇异常输出问题求助

问题分析与修正

你的递归逻辑错误,导致计算结果不符合连续减法的预期。以输入1和3为例,当前代码的计算过程是:

sum(1,3) = 1 - sum(2,3)
sum(2,3) = 2 - sum(3,3)
sum(3,3) = 3

最终得到 1 - (2 - 3) = 2,而非预期的 1-2-3=-4。

修正方案

要实现x - (x+1) - (x+2) - ... - y的连续减法,递归逻辑需要调整为:

  • 当x == y时,返回x(区间仅一个数时,结果为自身)
  • 当x < y时,返回sum(x, y-1) - y(先计算x到y-1的连续减法结果,再减去y)

同时可以优化Scanner的使用,无需创建多个实例。

修正后的代码:

import java.util.Scanner;

public class recursionTest {
    public static void main(String[] args) {
        int input1;
        int input2;

        Scanner scanner = new Scanner(System.in);
        System.out.println("Please input lower value: ");
        input1 = scanner.nextInt();
        System.out.println("Please input higher value: ");
        input2 = scanner.nextInt();

        int result = sum(input1, input2);
        System.out.println(result);
        scanner.close();
    }

    public static int sum(int x, int y) {
        if (x == y) {
            return x;
        } else {
            return sum(x, y - 1) - y;
        }
    }
}

验证示例

输入1和3时,计算过程为:

sum(1,3) = sum(1,2) - 3
sum(1,2) = sum(1,1) - 2 = 1 - 2 = -1
sum(1,3) = -1 - 3 = -4

符合预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 10:12:21