我正在为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;
}
有人可以帮我这个吗?我不确定我的功能出现了什么问题以及无限循环的来源。
答案 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;
}