我想學習遞歸,它的行爲真的很奇怪。我有以下簡單的方法來減少給定的值和總和偶數,直到值變爲0.然而,一旦值= 0,它開始只訪問遞歸調用(在IF-ELSE條件下)並開始增加我的價值回來,並再次添加,直到它回到初始值。我錄製了2個截屏視頻。例如,如果我在類中創建主方法並使用5執行方法,例如,我會接收輸出6,這是正確的,但是在JUnit測試中,對於相同的值,它期望,但實際值爲!我不確定我做錯了什麼。而且,一旦數值達到0,我是否返回正確的東西?我不知道如何返回和那裏,但在同一時間有總和返回方法本身的輸出..遞歸遞減值然後意外遞增
class EvenSums {
private static int sum = 0;
public static int sumEvenRec(int n) {
int input = n;
if(input <= 0) {
return 0;
} else {
if(input % 2 == 0) {
sum += input;
}
sumEvenRec(input-1);
}
return sum;
}
這裏的調試截屏(注意輸入的降低後升高值)並注意它是如何從迴歸和迴歸到以某種方式增加輸入值的遞歸函數。 DEBUG SCREENCAST
在測試截屏可以看到:
對於輸入2:java.lang.AssertionError: expected:<2> but was:<58>
對於輸入5:java.lang.AssertionError: expected:<6> but was:<64>
對於輸入6:java.lang.AssertionError: expected:<12> but was:<76>
Intrestingly,對於輸入:作品!
TEST SCREENCAST
天哪,工作!謝謝!刪除了靜態並創建了一個對象。是!謝謝! – WannaBeForNow