Se a declaração não reconhece condições verdadeiras?
Estou tendo problemas com esse algoritmo de pesquisa binária. Aqui estão as explicações das variáveis.
value: o número que está sendo pesquisado na matriz
valores []: a matriz que está sendo pesquisada
n: número de elementos na matriz
high: elemento mais alto (pela posição indexada zero) da parte da matriz que está sendo pesquisada
low: elemento mais baixo (pela posição indexada zero) a parte da matriz que está sendo pesquisada
Meu problema não é a recursão. A parte da matriz que está sendo pesquisada gira em torno de "valor" e as condições identificadas abaixo estão sendo atendidas. o problema é que minhas declarações if não parecem reconhecer que são. Eu sei que as condições estão sendo atendidas porque, quando imprimo valores [alto], valores [meio] e valores [baixo] para cada recursão, isso mostra que eles são.
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;
}
O que há de errado aqui?