Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
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

Última edición por dec fecha: 15-10-2007 a las 14:17:09.
Responder Con Cita
  #2  
Antiguo 15-10-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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.
Responder Con Cita
  #3  
Antiguo 15-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
muchas gracias
Responder Con Cita
  #4  
Antiguo 20-04-2009
phantomimo phantomimo is offline
Registrado
 
Registrado: ago 2006
Posts: 1
Poder: 0
phantomimo Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comparación binaria de 2 archivos... n3mohack Varios 5 02-04-2007 23:38:37
Busqueda recursiva en disco desde java gulder JAVA 0 10-11-2006 19:02:37
label dinamicos, arreglos busqueda x metodo lineal y binaria. VB.net sakuragi .NET 0 28-09-2005 06:34:09
Suma binaria CHiCoLiTa Varios 3 06-05-2005 12:17:59
Busqueda recursiva Descendents Varios 2 06-02-2004 17:40:19


La franja horaria es GMT +2. Ahora son las 18:20:11.


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