Работа с ошибкой сегментации в рекурсивном бинарном поиске

Как я могу предотвратить ошибку сегментации с помощью рекурсивного двоичного поиска, который не находит число, которое он ищет в массиве.

int recursive_binary_search(int A[], int beg, int end, int key)
{
if(end < beg)
return -1;
int mid = beg + end / 2;
if(A[mid] == key)
return mid;
else if(A[mid] > key)
return recursive_binary_search(A, beg, mid - 1, key);
else
return recursive_binary_search(A, mid + 1, end, key);
}

0

Решение

Следующий код может быть достаточно,

int recursive_binary_search(int A[], int beg, int end, int key)
{
if(end < beg)
cout<<"\nKey not Found";
int mid = beg + end / 2;
if(A[mid] == key)
return mid;
else if(A[mid] > key)
return recursive_binary_search(A, beg, mid - 1, key);
else
return recursive_binary_search(A, mid + 1, end, key);
}
1

Другие решения

Оказывается, я забыл () вокруг определения mid,

Исправляя определение к

int mid = (beg + end) / 2;

исправил проблему.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector