我感觉非常愚蠢,因为我解决了比这更难的事情。 这应该是有序二进制搜索的实现。每当我跟踪12时,都会弹出stackoverflow错误。有什么帮助吗?
public class binarySearch {
public static void main(String[] args) {
int[] arr = { 1, 5, 6, 8, 12, 88 };
System.out.println(binaryHelper(0, arr.length - 1, 12, arr));
}
public static int binaryHelper(int first, int last, int target, int[] arr) {
if(first > last) return -1;
else {
int mid = first + last / 2;
if(arr[mid] == target) return mid;
else if(arr[mid] > target) return binaryHelper(first, mid - 1, target, arr);
else return binaryHelper(mid + 1, last, target, arr);
}
}
}
答案 0 :(得分:2)
答案 1 :(得分:1)
错误在这里:
int mid = first+last/2;
这意味着mid等于第一个+最后一个被2分割,这是错误的
所以它应该像
int mid = (first+last)/2;