Forum: Sonstige Fragen zu Delphi
Delphi
by Matze,
1. Nov 2009
In dem von "waub" verlinkten Thema (das über meinen Link auch aufgelistet wird) ist auch die Abbruchbedingung vorhanden. Das muss bei der Rekursion auch immer so sein, sonst ruft sich die Funktion so lange auf, bis es Speicherprobleme gibt.
if SR.Attr and faDirectory = faDirectory then // Verzeichnis wurde gefunden
if (SR.Name <> '.') and (SR.Name <> '..') then // Verzeichnis...
Forum: Sonstige Fragen zu Delphi
Delphi
by Matze,
1. Nov 2009
Du musst eine entsprechende Abbruchbedingung definieren:
function fak_rek(n: Integer): Integer;
begin
if n <= 1 then // Abbruchbedingung
Result := 1
else
Result := n * fak_rek(n-1);
end;
Forum: Sonstige Fragen zu Delphi
Delphi
by Matze,
31. Okt 2009
Die Rekursion ist auch nicht ganz einfach. Wenn man sie jedoch verstanden hat, lassen sich damit viele Dinge mit sehr wenig Code lösen (Türme von Hanoi, Berechnung der Fakultät, ...). Sie kommt meist dort zum Einsatz, wo man von vornherein keine direkte Abbruchbedingung für eine Schleife angeben kann (die Anzahl der Unterordner ist vorerst unbekannt). Mit Schleifen geht es sicher auch, nur...
Forum: Sonstige Fragen zu Delphi
Delphi
by Matze,
31. Okt 2009
Hallo,
dafür ist die Rekursion wie geschaffen (eine Funktion ruft sich selbst wieder auf). Schaue mal nach FindAllFiles. Intern wird wieder FindFirst/FindNext benutzt.
Grüße, Matze