Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   busqueda binaria recursiva (https://www.clubdelphi.com/foros/showthread.php?t=49169)

alba13 15-10-2007 14:05:38

busqueda binaria recursiva
 
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.

Código Delphi [-]
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

Código Delphi [-]
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

función recursiva
 
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.


La franja horaria es GMT +2. Ahora son las 07:31:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi