2017-03-03 52 views
1

我需要此递归方法的帮助。我需要它从起点到终点添加整数。JAVA:使用递归从头到尾添加

public static int sumInts(int begin, int end){ 
    if (begin == end) 
     return begin + end; 
    else 
     return sumInts(begin+1,end); 
} 

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

但是我却越来越8作为我的输出为那些特定的输入。我知道这是破坏这个条件,但我似乎无法弄清楚..

+0

对于'sumInts(1,1)'的情况,你期望什么? –

+3

如果仔细看看代码,它基本上是'return end + end;' – UnholySheep

+0

在第5行中将您的代码更改为 - return begin + sumInts(begin + 1,end); –

回答

7

但我得到8作为我的输出为那些特定的输入。

这很正常。它将每次都去else块,但最后一次,因为beginend将是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 
} 

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

public static int sumInts(int begin, int end){ 
    if (begin == end) 
     return begin; 
    else 
     return end + sumInts(begin,end-1); 
} 
+0

双方都有效。谢谢一堆! –