2017-03-03 51 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

雙方都有效。謝謝一堆! –