我编写了一些代码来实现一个函数,它使用二进制搜索来检查给定值是否在数组中。我使用了一个递归函数,它用新的输入来调用自己,这样排序后的值数组的一半总是被截断。如果二进制搜索函数的计算结果为true,则先前执行的函数的计算结果为false。有人知道如何处理这个问题吗?
下面是我在代码中使用的函数:
bool binarySearch(int key, int array[], int min, int max)
{
int midPoint = findMidPoint(min, max);
if (max < min)
return false;
if (array[midPoint] < key)
{
binarySearch(key, array, midPoint + 1, max);
}
else if (array[midPoint] > key)
{
binarySearch(key, array, min, midPoint - 1);
}
else if (array[midPoint] == key)
{
return true;
}
return false;
}
最佳答案
这就是arunmoezhi所说的,你需要返回你的调用(递归函数),如果不是的话,你的结果将被放逐,而下一个阶段是返回false,这就是为什么你总是得到false。
bool binarySearch(int key, int array[], int min, int max)
{
int midPoint = findMidPoint(min, max);
if (max < min)
return false;
if (array[midPoint] < key)
{
return binarySearch(key, array, midPoint + 1, max);
}
else if (array[midPoint] > key)
{
return binarySearch(key, array, min, midPoint - 1);
}
else if (array[midPoint] == key)
{
return true;
}
return false;
}