我编写了一些代码来实现一个函数,它使用二进制搜索来检查给定值是否在数组中。我使用了一个递归函数,它用新的输入来调用自己,这样排序后的值数组的一半总是被截断。如果二进制搜索函数的计算结果为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;
}

10-01 21:36