переполнение с помощью бинарного поиска

Я пытаюсь реализовать binarySerach рекурсивно, но я получил переполнение стека.

Сначала у меня есть find функция, которая принимает 3 параметра. Затем я вызываю эту функцию в main и передать адрес из массива. Орех у меня переполнение стека!

bool find( const int x, const int* pBegin, const int* pEnd)
{
int medel =((*pBegin) + (*pEnd -1))/2 ;

if(x == medel)
return true ;

else if( x<medel)
{
int last = medel -1 ;
return find(x, pBegin, &last);
}
else if( x > medel)
{
int begin = medel +1;
return find(x, &begin, pEnd);
}}// find

void main()
{
int arr[10];
for (int i=0;i<10;++i)
arr[i] = i;
bool found = find(3, &arr[0], &arr[10]);
cout << "hittat = " << found << endl;

system("pause");
}

0

Решение

Есть несколько очень фундаментальных проблем, связанных с использованием указателей в вашем коде. Не исправляя код для вас, я дам вам подсказку:

Попробуйте повернуть medel в указатель к среднему элементу. Это может помочь решить некоторые проблемы.

0

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

Других решений пока нет …

По вопросам рекламы [email protected]