Этот код работает, за исключением возврата false в конце. Почему он не возвращает ложных должным образом?Ошибка возврата двоичного файла
Я знаю, что это так, потому что код является частью большей программы и должен сказать, что «стрелка не найдена» при возврате false. Однако я не вижу этого сообщения.
/**
* Returns true if value is in array of n values, else false.
*/
int lower = 0;
bool search(int value, int values[], int n) {
int higher = n;
if (n < 0) {
return false;
}
while (lower <= higher) {
int middle = (lower + higher)/2;
if (values[middle] == value) {
return true;
} else if (values[middle] < value) {
lower = middle + 1;
} else if (values[middle] > value) {
lower = middle - 1;
}
}
return false;
}
Что такое содержимое 'values'? Он * сортируется? Каковы значения 'value' и' n'? Вы пробовали переходить через код по строкам в отладчике? И почему 'lower' является глобальной переменной? –
Я не Джон Скит, но мне кажется, что вы никогда не перебалансируете свое 'высшее значение', а вместо этого передвигаетесь только« ниже ». Вы прошли через этот код, чтобы узнать, что он на самом деле делает? –
@TimBiegeleisen: Это похоже на ответ. –