Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#7

Re: Un/gerade - Indirekte Rekursion

  Alt 1. Nov 2003, 19:03
Hi axelf98,
du meinst das, da beide Funktionen die gleiche Abfrage haben, es zum Stack-Überlauf kommen kann.
Dem ist nicht so.
Also wenn einer dieser Funktionen eine gerade Zahl übergeben wird, kommt der Text und die Funktion wird beendet.
Wenn aber einer dieser Funktionen eine ungerade Zahl übergeben wird, wird deren Vorgänger (X - 1) an die Andere weitergegeben. Da es dann ja eine gerade Zahl ist, kommt dort der Text und die beiden Funktion werden ebenfalls beendet.

@n00b_on_knees,
ich verstehe nur nicht wo dein Problem ist, es scheint doch zu funktionieren?

Bloß eine Ausgabe wie z.B. "Die Zahl 42 ist Ungerade" klingt ein bissel blöd, da ja nicht 42 sondern ihr Nachfolger (43) ungerade ist.


Abfrage ob gerade - bei ja - Ausgabe das die "gerade" Zahl ungerade ist.
Delphi-Quellcode:
function TForm1.odd(x: integer): boolean;
begin
  if (x mod 2 = 0) then begin
    result:= false;
    mmAus.Lines.Add('Die Zahl ' + IntToStr(x) + ' ist Ungerade');
Es sollte zum Beispiel so aussehen:
Delphi-Quellcode:
function TForm1.odd(x: integer): boolean;
begin
  if (x mod 2 = 0) then begin
    result:= false; {v}
    mmAus.Lines.Add('Die Zahl ' + IntToStr(x) + ' ist Gerade');

{oder}

function TForm1.odd(x: integer): boolean;
begin
  if (x mod 2 = 0) then begin
    result:= false; {v}
    mmAus.Lines.Add('Die Zahl ' + IntToStr(Succ(x)) + ' ist Ungerade');

{oder}

function TForm1.odd(x: integer): boolean;
begin
  if (x mod 2 = 0) then begin
    result:= false; {v}
    mmAus.Lines.Add('Der Nachfolger der Zahl ' + IntToStr(x) + ' ist Ungerade');
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat