//使用递归的话,就需要将问题进行分割,最后得到每个部分的最小值
public class MixReCursion {
//主函数
public int getMin(int arr[],int pos,int n){
int n1,n2,n3;
//递归方法的出口,当只有一个值的时候就返回
if(n==1){
return arr[pos];
}
else{
//当分块的部分为偶数个时
if(n%2==0){
//获得前一部分的最小值
n1 = getMin(arr,pos,n/2);
//获得最后一部分的最小值
n2 = getMin(arr,pos+n/2,n/2);
if(n1>n2){
return n2;
}
else{
return n1;
}
}
//分块部分为偶数个时
else{
n1 = getMin(arr,pos,n/2);
n2 = getMin(arr,pos+n/2,n/2);
n3 = getMin(arr,pos+n/2+1,n/2);
if(n1<n2){
if(n1<n3){
return n1;
}
else{
return n3;
}
}else{
if(n2>n3){
return n3;
}
else{
return n2;
}
}
}
}
}
public static void main(String args[]){
int a[] = new int[]{22,5,99,9,11,6,4};
MixReCursion min = new MixReCursion();
System.out.println(min.getMin(a, 0, 7));
}
}