我已经编写了一些代码来实现一个函数,它使用二进制搜索来检查给定值是否在数组中。我使用了一个递归函数,该函数使用新输入调用自身,以便始终截断已排序值数组的一半。如果二分搜索函数的计算结果为真,则之前执行的函数的计算结果为假。有人知道如何处理这个问题吗?
这是我在代码中使用的函数:
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;
}
关于c - 递归函数多个返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23094866/