Java 最小和最大竞赛法

Java 最小和最大竞赛法,java,max,min,tournament,Java,Max,Min,Tournament,有人能告诉我我做错了什么吗?我已经编写了这个最小值和最大值查找程序,但是我一直在“mml=getMinMax(a,low,high)”中得到这个错误:“stackoverflowerrror”。任何帮助都将不胜感激。谢谢大家! public class MinMax { int min; int max; public static void main(String[] args){ int a[] = {4, 23, 6, 42, 11}; int aSize = a.le

有人能告诉我我做错了什么吗?我已经编写了这个最小值和最大值查找程序,但是我一直在“mml=getMinMax(a,low,high)”中得到这个错误:“stackoverflowerrror”。任何帮助都将不胜感激。谢谢大家!

public class MinMax {
int min;
int max;

public static void main(String[] args){

    int a[] = {4, 23, 6, 42, 11};
    int aSize = a.length -1;
    MinMax test = getMinMax(a,0,aSize);
    System.out.println("Minimum: " + test.min);
}


public static MinMax getMinMax(int a[], int low, int high){
    MinMax minmax = new MinMax();
    MinMax mml = new MinMax();
    MinMax mmr = new MinMax();

    int mid = ((low + high)/2);
    mml = getMinMax(a, low, mid);
    mmr = getMinMax(a, mid+1, high);

    if(mml.min < mmr.min){
        minmax.min = mml.min;
    }else{
        minmax.max = mmr.max;
    }

    if(mml.max > mmr.max){
        minmax.max = mml.max;
    }else{
        minmax.max = mmr.max;
    }
    return minmax;      
}   
公共类最小值{
int-min;
int max;
公共静态void main(字符串[]args){
INTA[]={4,23,6,42,11};
int aSize=a.length-1;
最小值测试=获取最小值(a,0,aSize);
System.out.println(“最小值:+测试最小值”);
}
公共静态最小值getMinMax(整数a[],整数低,整数高){
最小值最小值=新的最小值();
MinMax mml=新的MinMax();
MinMax mmr=新的MinMax();
int mid=((低+高)/2);
mml=getMinMax(a、低、中);
mmr=getMinMax(a,中+1,高);
如果(mml.minmmr.max){
最小最大值=毫米最大值;
}否则{
minmax.max=mmr.max;
}
返回最小最大值;
}   

}

您正在递归调用getMinMax函数,但您从未使用基本情况终止递归。我不确定您为什么要初始化类
MinMax
,因为它似乎没有任何作用。无论如何,这个错误意味着你重复了太多的时间。您的函数每次调用递归两次,并且没有基本情况,因此它基本上成为一个无限循环。您需要查找如何正确使用递归。