我知道这意味着函数可能在没有返回值的情况下到达终点,但我不确定原因。
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;
}
}
答案 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, ...);