PDA

Ver la Versión Completa : busqueda binaria recursiva


alba13
15-10-2007, 14:05:38
hola, estoy codificando el algoritmo busqueda binaria recursiva y al devolver la posición en la que se encuentra el número me devuelve siempre el último resultado, y eso no es lo correcto al ser recursivo.


function busquedaBinariaRec3 (dato : integer;inicio : integer;
fin : integer; var aBB: array of integer ) : integer;
var
pivote : integer;
begin
pivote := (inicio + fin) div 2;
if inicio > fin then
result := -1
else if dato = aBB[pivote] then
result := pivote
else if dato < aBB[pivote] then
busquedaBinariaRec3(dato,inicio,pivote-1,aBB)
else if dato > aBB[pivote] then
busquedaBinariaRec3(dato,pivote+1,fin,aBB);
end;


pd: perdon por no haber usado etiquetas en el foro anteriormente. espero q ahora si lo haya hecho correctamente. un saludo

duilioisola
15-10-2007, 15:00:26
function busquedaBinariaRec3 (dato : integer;inicio : integer;
fin : integer; var aBB: array of integer ) : integer;
var
pivote : integer;
begin
pivote := (inicio + fin) div 2;
if inicio > fin then
result := -1
else if dato = aBB[pivote] then
result := pivote
else if dato < aBB[pivote] then
result := busquedaBinariaRec3(dato,inicio,pivote-1,aBB)
else if dato > aBB[pivote] then
result := busquedaBinariaRec3(dato,pivote+1,fin,aBB);
end;


Creo que te has olvidado de asignarle a RESULT el resultado de lo que busque recursivamente.

alba13
15-10-2007, 15:10:23
muchas gracias:D

phantomimo
20-04-2009, 01:36:14
Gracias por la respuesta, aunque me funcionó en otra situación, puesto que si la llamada a la función recursiva no se asigna a Result, el compilador devolverá el primer valor calculado en vez del último. Saludos.