public static boolean sum_rec(int[] A, int n, int k) {
return addition(A, n, k, 0);
} // end sum_rec
private static boolean addition(int[] A, int n, int k, int i) {
if (k == A[i] + A[n - 1 - i]) {
return true;
}
else if (n == 1){
return false;
}
else
return addition(A, n, k, i++);
}
嗨,每当我尝试运行以下代码时,都会收到 stackoverflow 错误。如果数组中有任何两个数字的总和等于值 k,它会返回 true,但我似乎找不到错误。任何帮助将不胜感激。另外这个的运行时间是多少?
最佳答案
您需要一个基本情况,在这种情况下结束递归(返回 false)
k == A[i]+A[n-1-i]
从来都不是真的。
n == 1 不是基本情况,因为 n 在递归期间不会更改...基本情况取决于递归期间更改的变量
关于java.lang.stackoverflow错误递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35283908/