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');