【发布时间】:2015-06-17 04:38:10
【问题描述】:
我正在尝试为数据结构类的最大值和最小值编写一个 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
}
}
【问题讨论】:
-
你是在使用二分查找的方法在一个unsorted数组中查找最大值???
-
添加一些调试语句以在调用 maxArray 时测试值 p 和 r。 p 可以等于 r 吗?更一般地说,为什么不通过简单的循环遍历数组来找到最大值?
标签: java recursion stack stack-overflow