我需要这个递归方法的帮助.我需要它从起点到终点添加整数.
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是那些特定输入的输出.我知道这是破坏这个的条件,但我似乎无法弄清楚..
但是我得到了8作为那些特定输入的输出.
这是正常的.它会去else块每次但最后一次,因为这两个begin和end会4,它会返回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)