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
相关产品推荐
相关产品推荐

