java.lang.stackoverflow错误递归

标签 java recursion

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/

相关文章:

java - 有没有更好的方法将 Double 转换为其精确的十进制字符串?

java - 有什么方法可以将 GeoFence 添加到 Mapbox 中吗?

java - 如何管理ThreadPoolTask​​Executor来阻止某些请求

javac错误: Class names are only accepted if annotation processing is explicitly requested

algorithm - [InterviewBit]两个整数的幂

c - 是否有任何运算符可以用来附加 2 个计算?

php - 如何在 PHP 的递归函数中保存原始参数?

java - 当我运行我的应用程序时出现未知错误

performance - 有没有办法通过记住子节点来加速递归?

Python-获取树中所有 child 的高度