gpt4 book ai didi

java - 递归最大堆栈溢出错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:58:23 27 4
gpt4 key购买 nike

我正在尝试为数据结构类的最大值和最小值编写一个 3 输入递归程序。我收到堆栈溢出错误。我无法判断我是否超出了数组的末尾,但就我的理解而言,我不应该这样做。任何帮助,将不胜感激。这是我的代码:

class Extrema {

// maxArray()
// returns the largest value in int array A
// p is position zero, r is position length-1
static int maxArray(int[] A, int p, int r) {
int q;
if (p == r) {
return A[p];
} else {
q = (p + r)/2;
return max(maxArray(A, p, q-1), maxArray(A, q+1, r));
}
}

// max()
// returns the largest value of two ints
private static int max(int a, int b) {
return a > b ? a : b;
}

// main()
public static void main(String[] args) {
int[] B = {-1, 2, 6, 3, 9, 2, -3, -2, 11, 5, 7};
System.out.println( "max = " + maxArray(B, 0, B.length-1) ); // output: max = 11
}
}

最佳答案

要么非递归,因为递归在这里没有任何意义:

static int maxArray(int[] A, int p, int r)  {
int max = A[p];
for (int i = p + 1; i <= r; i++) {
if (A[i] > max)
max = A[i];
}
return max;
}

或者,如果您坚持某种递归,请使用现有代码,只需稍加更改:

return max(maxArray(A, p, q), maxArray(A, q+1, r));

请注意,对第一个 maxArray 函数的调用现在将传递 q 而不是 q-1 作为结束索引。

关于java - 递归最大堆栈溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29578722/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com