C ++中的递归二进制搜索函数

时间:2014-07-18 22:28:35

标签: c++ binary-search

我正在为C ++中的项目编写递归二进制搜索函数,由于某种原因,它无限运行并且无法正常执行。我的代码如下:

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;
}

有人可以帮我这个吗?我不确定我的功能出现了什么问题以及无限循环的来源。

1 个答案:

答案 0 :(得分:2)

再添加一个参数来存储搜索边界。

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;
}