user2626791
user2626791

Reputation: 11

Recursive binary search function in C++

I'm writing a recursive binary search function for a project in C++ and for some reason, it runs infinitely and does not execute properly. My code is as follows:

int recursiveBin(const int list[], int listLength, int searchItem)
{
    if(listLength == 0)
        return -1;

    int mid = (listLength - 1)/2;

    if(list[mid] > searchItem)
        return recursiveBin(list, mid - 1, searchItem);
    else if(list[mid] < searchItem)
        return recursiveBin(list, mid + 1, searchItem);
    else
        return mid;
}

Can someone please help me with this? I'm not sure what is going wrong with my function and where the infinite loop comes.

Upvotes: 0

Views: 556

Answers (1)

bestalign
bestalign

Reputation: 227

Add one more parameter to store the search boundary.

int recursiveBin(const int list[], int start, int end, int searchItem)
{
    if(end > start)
        return -1;

    int mid = (start + end)/2;

    if(list[mid] > searchItem)
        return recursiveBin(list, start, mid - 1, searchItem);
    else if(list[mid] < searchItem)
        return recursiveBin(list, mid + 1, end, searchItem);
    else
        return mid;
}

Upvotes: 2

Related Questions