Java中使用递归对之前的数字求和

问题描述 投票:0回答:1

我正在努力解决这个作业问题:

编写一个名为 sumOfPreviousN 的方法,它接受两个整数并返回第一个数字减去第二个数字的倍数的总和。例如: 编写一个名为 sumOfPreviousN 的方法,该方法接受两个整数并返回第一个数字减去第二个数字的倍数的总和。例如,sumOfPreviousN(9, 4) 将返回 6,因为它会添加 5 + 1。 sumOfPreviousN(20, 6) 将返回 24,因为它会添加 14 + 8 + 2。

我们还没有学过循环,所以只能使用递归。

这是我到目前为止所拥有的:

public class help {
    public static int sumOfPreviousN(int num1, int num2) {
        if (num1 <= num2) {
            return num1 + num2;
        } else {
            int subtracted = num1 - num2;
            return subtracted + sumOfPreviousN(subtracted, num2); 
        }
    }
    public static void main(String[] args) {
        int num1 = 20;
        int num2 = 6;
        System.out.println(sumOfPreviousN(num1, num2));
    }
}

感觉我需要使用我缺少的第三个变量,但肯定有办法!对于这个例子,我不知道如何继续减去 6,同时跟踪减少 6 的值以及后者添加的值。

java recursion
1个回答
0
投票

我认为你的基本情况应该是

num1
>
num2
。当
num2
大于或等于时,返回
0
。否则使用当前的递归和类似的东西,

public static int sumOfPreviousN(int num1, int num2) {
    if (num1 <= num2) {
        return 0;
    }
    int subtracted = num1 - num2;
    return subtracted + sumOfPreviousN(subtracted, num2);
}

我用您提供的测试用例进行了测试,

System.out.println(sumOfPreviousN(9, 4) == 6);
System.out.println(sumOfPreviousN(20, 6) == 24);

并且得到了

true
true
© www.soinside.com 2019 - 2024. All rights reserved.