Si la declaración no reconoce condiciones verdaderas?
Tengo problemas con este algoritmo de búsqueda binaria. Aquí hay explicaciones de las variables.
valor: el número que se busca dentro de la matriz
valores []: la matriz que se está buscando
n: número de elementos en la matriz
alto: elemento más alto (por posición indexada cero) de la parte de la matriz que se está buscando
low: elemento más bajo (por posición indexada cero) la parte de la matriz que se está buscando
Mi problema no es la recursión. La parte de la matriz que se busca se centra en torno al "valor" y se cumplen las condiciones identificadas a continuación. El problema es que mis declaraciones if no parecen reconocer que lo son. Sé que se están cumpliendo las condiciones porque cuando imprimo valores [alto], valores [medio] y valores [bajo] para cada recursión, muestra que lo son.
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;
}
¿Qué pasa aquí?