public class GoldProblem {
public static void maxMin(int i,int j,float a[],float max,float min){
int mid;
if(i==j){
max=a[i];
min=a[j];
}
else if(i==j-1){
if(a[i]>a[j]){
max=a[i];
min=a[j];
}
else {
max=a[j];
min=a[i];
}
}
else{
float rmax=0 ,rmin=0,bmax=0,bmin=0;
mid=(i+j)/2;
maxMin(i,mid,a,rmax,rmin);
if(mid<=j){
maxMin(mid+1,j-1,a,bmax,bmin);}
if(rmax>bmax){
max=rmax;
}else{
max=bmax;
}
if(rmin>bmin){
min=bmin;
}else{
min=rmin;
}
}
System.out.println("最大值为"+max);
System.out.println("最小值为"+min);
}
public static void main(String[] args) {
float b[]={11,14,12,16,18};
maxMin(0,4,b,0,0);
}
}
我也用DEBUG看到了,应把maxMin(mid+1,j-1,a,bmax,bmin);改为maxMin(mid+1,j,a,bmax,bmin);
但是输出的最大值和最小值都为0.