Java 最小和最大竞赛法
有人能告诉我我做错了什么吗?我已经编写了这个最小值和最大值查找程序,但是我一直在“mml=getMinMax(a,low,high)”中得到这个错误:“stackoverflowerrror”。任何帮助都将不胜感激。谢谢大家!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
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
,因为它似乎没有任何作用。无论如何,这个错误意味着你重复了太多的时间。您的函数每次调用递归两次,并且没有基本情况,因此它基本上成为一个无限循环。您需要查找如何正确使用递归。