二进制搜索函数完成而不返回 int

binary search function finishing without returning int

我一遍又一遍地查看这个函数,无法弄清楚为什么我在尝试编译代码时得到这个 warning/error。我使用的编译器以 -Werror 运行,所以我不确定它是警告还是错误,但我得到的错误是:

错误:控制可能到达非 void 函数的结尾 [-Werror,-Wreturn-type]

这是我的函数

int binarySearch(int key, int array[], int min, int max)
{
    //Check if there is value is not found
    if(max < min)
    {
        return -1;
    }
    else
    {
        //find midpoint
        int midpoint = (min + max) / 2;

        //Run recursive steps
        if(array[midpoint] < key)
        {
            binarySearch(key, array, midpoint + 1, max);
        }
        else if(array[midpoint] > key)
        {
            binarySearch(key, array, min, midpoint - 1);
        }
        else
        {
            return midpoint;
        }
    }
}

如果 array[midpoint] < keyarray[midpoint] > key,您递归调用 binarySearch,然后在未指定 return 值的情况下退出函数的末尾。您大概想要 return 由这两个分支中的递归调用编辑的值 return,例如

return binarySearch(key, array, midpoint + 1, max);

(要回答您的其他问题,如果未设置 -Werror,编译器诊断将发出警告,但警告表明代码中存在错误,这当然是 -Werror 通常是个好主意。)