Exercícios sobre busca binária

Re: Exercícios sobre busca binária

por Gustavo Estrela de Matos -
Número de respostas: 0

Fiz uma versão que dá certo exceto quando o valor não está presente no vetor triste

int
buscaBinaria (int x, int n, int *v)
{
int m;
if (n == 0) return -1;
m = n/2;
if (v[m] == x) return m;
if (v[m] < x) return buscaBinaria(x,n-m-1, &v[m+1])+(m+1);
return buscaBinaria(x, m, v);
}
Eu até sei qual é o problema:
Quando eu retorno -1, as outras chamadas continuam somando (m+1) no return
__________________________________________________________________________

EDIT: agora funciona

int
buscaBinaria (int x, int n, int *v)
{
int m;
int a;
if (n == 0) return -1;
m = n/2;
if (v[m] == x) return m;
if (v[m] < x)
{
a = buscaBinaria(x,n-m-1, &v[m+1]);
return a + (m+1)*(a!=-1);
}
return buscaBinaria(x, m, v);
}