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 给我“线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 7”。
由于 p>r 条件,我认为它应该返回 -1。我尝试将条件更改为 p>=r 但对于数组中实际存在的内容,它将返回 -1。我究竟做错了什么?非常感谢
最佳答案
您的搜索应从 0
开始到 arr.length-1
,
System.out.println(recursive_binary_search(arr,0,arr.length-1,989));
关于java - 索引外的递归二分搜索数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51804622/