c - 递归函数多个返回值

标签 c recursion gdb binary-search

我已经编写了一些代码来实现一个函数,它使用二进制搜索来检查给定值是否在数组中。我使用了一个递归函数,该函数使用新输入调用自身,以便始终截断已排序值数组的一半。如果二分搜索函数的计算结果为真,则之前执行的函数的计算结果为假。有人知道如何处理这个问题吗?

这是我在代码中使用的函数:

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/

相关文章:

c - 将字符附加到 C 字符串时,Valgrind 无效读/写

c++ - 如何使用 RegOpenKeyEx 创建或查询注册表

c - 需要帮助来识别 C 中的变量

c - 为什么我需要在 C 中指定引用和指针而不是普通变量

c++ - 如何在运行时查看 C 程序的内存布局?

c++ - 使用-O0优化对静态变量的 undefined reference [stm32模板引脚]

c - C中单个文本字符串中的多个字符数组scanf

Java - 使用递归从字符串创建所有子字符串

list - 生成26!列表来解决 Lisp 中的密码

c++ - 以下递归解决方案的大O