JAVA:使用递归从头到尾添加

Dav*_*sus 1 java recursion

我需要这个递归方法的帮助.我需要它从起点到终点添加整数.

    public static int sumInts(int begin, int end){
    if (begin == end)
        return begin + end;
    else
        return sumInts(begin+1,end);
}
Run Code Online (Sandbox Code Playgroud)

示例输出应该是: Start: 1 End: 4 Sum is: 10

但我得到的8是那些特定输入的输出.我知道这是破坏这个的条件,但我似乎无法弄清楚..

Bac*_*ash 7

但是我得到了8作为那些特定输入的输出.

这是正常的.它会去else块每次但最后一次,因为这两个beginend4,它会返回4 + 4 = 8.

你应该做这样的事情:

public static int sumInts(int begin, int end){
    if (begin == end)
        return end; // return the last number
    else
        return begin + sumInts(begin+1,end); // sum the current number with the recursion result
}
Run Code Online (Sandbox Code Playgroud)

当然,这可以通过另一种方式来实现 - 通过减少end而不是增加begin.

public static int sumInts(int begin, int end){
    if (begin == end)
        return begin;
    else
        return end + sumInts(begin,end-1);
}
Run Code Online (Sandbox Code Playgroud)