【问题标题】:Recursive Binary Search Array out of Index超出索引的递归二进制搜索数组
【发布时间】:2019-01-19 03:19:40
【问题描述】:
public static void main(String[] args) {
    int [] arr = {11,14,18,22,36,89,125};
    System.out.println(recursive_binary_search(arr,0,arr.length,989));

}


public static int recursive_binary_search(int[] A,int p,int r,int x) {

    if( p > r) {

        return -1;
    }else {
        int q=(p+r)/2;
        if(A[q]==x) {

            return q;
        }else if(A[q]>x) {

            return recursive_binary_search(A,p,q-1,x);
        }else {
            return recursive_binary_search(A,q+1,r,x);

        }


    }


}

您好,感谢您的阅读。我对这种递归二进制搜索方法有一些问题。当我尝试搜索不在数组中的内容时,java 给我“线程“主”java.lang.ArrayIndexOutOfBoundsException:7 中的异常。

由于 p>r 条件,我认为它应该返回 -1。我试图将条件更改为 p>=r 但随后它会为数组中实际存在的东西返回 -1。我究竟做错了什么?非常感谢

【问题讨论】:

    标签: java arrays sorting recursion


    【解决方案1】:

    您的搜索应以0arr.length-1 开头,

    System.out.println(recursive_binary_search(arr,0,arr.length-1,989));
    

    【讨论】:

      猜你喜欢
      • 2020-09-25
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 2021-04-28
      • 1970-01-01
      相关资源
      最近更新 更多