我的递归Java二进制搜索算法不起作用
这是我的方法
System.out.println("recursiveBinarySearch "+recursiveBinarySearch(x,0,x.length-1,10));
public static int recursiveBinarySearch(int[]array,int low,int high,int value){
int mid;
if(low<=high){
mid=(low+high)/2;
if(array[mid]<value){
recursiveBinarySearch(array,mid+1,high,value);
}else if(array[mid]>value){
recursiveBinarySearch(array,low,mid-1,value);
}else{
return mid;
}
}
return -1;
}
似乎总是返回-1,这意味着该方法无法找到值。有人可以帮我解决这个问题并获得正确的结果吗?
答案 0 :(得分:2)
您应该返回递归调用的结果:
public static int recursiveBinarySearch(int[]array,int low,int high,int value){
int mid;
if(low<=high){
mid=(low+high)/2;
if(array[mid]<value){
return recursiveBinarySearch(array,mid+1,high,value);
}else if(array[mid]>value){
return recursiveBinarySearch(array,low,mid-1,value);
}else{
return mid;
}
}
return -1;
}
如果忽略递归调用的返回值,则始终返回-1
(除非初始mid
索引包含您要查找的值)。