错误:控制可能达到非空函数的结束

时间:2015-02-01 20:17:25

标签: c

我知道这意味着函数可能在没有返回值的情况下到达终点,但我不确定原因。

bool bisearch(int value, int values[], int min, int max)
{
    if (max < min)
        return false;
    else
    {
        int midpoint = (max + min) / 2;
        if (value > values[midpoint])
            bisearch(value, values, midpoint + 1, max);
        else if (value < values[midpoint])
            bisearch(value, values, min, midpoint - 1);
        else
            return true;
    }
}

2 个答案:

答案 0 :(得分:3)

如果到达标记的行,则不返回任何值。

  bool bisearch(int value, int values[], int min, int max)
  {
      if (max < min)
          return false;
      else
      {
          int midpoint = (max + min) / 2;
          if (value > values[midpoint])
->            bisearch(value, values, midpoint + 1, max);
          else if (value < values[midpoint])
->            bisearch(value, values, min, midpoint - 1);
          else
              return true;
      }
  }

答案 1 :(得分:1)

您的bisearch函数会返回bool个结果。

该函数调用自身两次 - 但两次都会丢弃结果。

更改两行:

bsearch(value, ...);

return bsearch(value, ...);