Thema: Delphi Binäre Suche rekursiv

Einzelnen Beitrag anzeigen

CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Binäre Suche rekursiv

  Alt 18. Sep 2006, 18:26
Hi marabu,

danke für den Tipp. Mein Code sieht jetzt so aus:
Delphi-Quellcode:
function binsuche(nname: string; list: TList; lbound, ubound: integer): integer;
var
  tdx: integer;
begin
  if lbound > ubound then begin
    Result := -1;
    Exit;
  end;

  tdx := lbound + ( (ubound - lbound) div 2 );

  if list[tdx].n_name = nname then begin
    Result := tdx;
    Exit;
  end;

  if list[tdx].n_name > nname then
    Result := binsuche(nname, list, 1, tdx)
  else
    Result := binsuche(nname, list, tdx, ubound);
end;
Wenn ich nun nach dem letzten Element der Liste suche, bekomme ich einen Stack Overflow um die Ohren gehauen und das Programm beendet sich (ist ein Konsolenprogramm).

@hoika: Danke, ich guck mir den Code mal an und vergleiche und versuche den Fehler zu finden.

Chris


Edit:
Fehler schon gefunden.
Ich habe die Rekursionsgrenzen etwas verändert:
Delphi-Quellcode:
  if list[tdx].n_name > nname then
    Result := binsuche(nname, list, 1, tdx-1)
  else
    Result := binsuche(nname, list, tdx+1, ubound);
So funktioniert's. Danke für eure Hilfe.
  Mit Zitat antworten Zitat