3 回答

TA貢獻1856條經驗 獲得超17個贊
正如另一位用戶所說,您的遞歸永無止境。
更改arr[head-1]
為head-1
應該在此行上解決此問題:
else return 0 + sumNegEven(arr, arr[head-1]);
并在這里更改它:
return arr[head] + sumNegEven(arr, arr[head-1]); }

TA貢獻1804條經驗 獲得超3個贊
public class TestClass {
public static int sumNegEven(int arr[], int head) {
if(head == 0) {
return 0;
} else if( arr[head]%2==0 || arr[head] <= 0 ) {
return arr[head] + sumNegEven(arr, head-1);
} else {
return 0 + sumNegEven(arr, head-1);
}
}
public static void main(String[] args) {
int[] arr = {-2,0,8,4,5,6,10,-5,-2,7,9};
System.out.println(sumNegEven(arr, arr.length-1));
}
}
通過調用 arr[head-1] 您調用的是索引的值而不是索引,它們持續很長時間,因為遞歸沒有終止。如果您調用 head-1,您正在調用實際索引,并且將毫無例外地得到答案 21。
添加回答
舉報