Приносим извинения за задание такого простого вопроса. Но я в тупике. Я думаю, что я реализовал решение с использованием правильного алгоритма, но по какой-то причине я получаю ошибку stackoverlow при запуске. Любая помощь?Что случилось с моей реализацией алгоритма бинарного поиска?
public class BinarySearch {
public static void main(String[] args){
int[] a = new int[]{1,3,5,9,10,100,210,423,500};
System.out.println(binarySearch(a,5,0,a.length-1));
}
static int binarySearch(int a[], int x, int left, int right){
if(left>right)
return -1;
int mid = left+right/2;
if(a[mid] < x){
return binarySearch(a,x,mid+1,right);
}
else if (a[mid] > x){
return binarySearch(a,x,left,mid-1);
}
return mid;
}
Какая ошибка вы получаете? Можете ли вы опубликовать свой вывод консоли? – Ganz7
Отсутствуют круглые скобки вокруг 'int mid = left + right/2;'. Должно быть 'int mid = (left + right)/2;'. – Tunaki