Если заявление не признавая истинные условия?
У меня проблемы с этим алгоритмом двоичного поиска. Вот объяснения переменных.
значение: число, которое ищется в массиве
values []: массив, который ищется
n: количество элементов в массиве
high: самый высокий элемент (с нулевой индексированной позицией) части искомого массива
low: самый низкий элемент (с нулевой индексированной позицией) часть массива, в которой выполняется поиск
Моя проблема не в рекурсии. Часть искомого массива сосредотачивается вокруг «значения» и условий, указанных ниже. проблема в том, что мои заявления if, кажется, не признают, что они есть. Я знаю, что условия выполняются, потому что когда я распечатываю значения [high], values [middle] и values [low] для каждой рекурсии, это показывает, что они есть.
int search(int value, int values[], int n, int high, int low)
{
if (n <= 0)
{
return 1;
}
int middle = (high + low) / 2;
///condition #1
if (value == values[middle])
{
return 0;
}
//conditions #2 and #3 (account for the maxes and mins of the array because the operation to find middle truncates)
else if ( values[middle]==values[low] || values[middle]==values[high])
{
return 0;
}
else if (value > values[middle])
{
low = middle;
search(value, values, n, high, low);
}
else if (value < values[middle])
{
high = middle;
search(value, values, n, high, low);
}
return 2;
}
Что здесь не так?