递归二进制搜索不返回预期值

时间:2018-11-09 07:09:14

标签: java recursion search binary-search

我的递归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,这意味着该方法无法找到值。有人可以帮我解决这个问题并获得正确的结果吗?

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索引包含您要查找的值)。