Hallo Miteinander!
Ich hoffe hier gibt es ein paar die sich mit der Indirekten Rekursion auskennen!
Das folgende Beispiel soll ausgeben, ob die eingegebene Zahl oder die um 1 verminderte gerade oder ungerade ist, weiters soll ausgegeben werden, in welcher Funktion das ganze geprüft wurde. Ich glaube ich Blicke hier im Moment nichtmehr durch, obwohl es wohl eventuell simpel sein wird. Wenn ich zum Beispiel irgendeine Ungerade Zahl wie 43 eingebe, wird die Zahl um 1 vermindert, und in der Funktion Odd ausgegeben, das die Zahl 42 ungerade ist.
Das Lösungsverfahren mit pred ist vorgegeben, wenn ich es weglasse kommt es sowieso zu einem Stack überlauf, sowie wenn ich die If Abfragen Bedinungen ändere.
Ich werde hier den Quellcode posten, sowie die Datei anfügen, vielleicht findet sich der Fehler ja schon beim Quelltext-sehen.
Ich hoffe ihr könnt mir helfen,
mit freundlichen Grüßen
n00b_on_knees
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');
mmAus.Lines.Add('Die Ausgabe befindet sich in der Funktion Odd');
end
else
result:= even(pred(x));
end;
function TForm1.even(x: integer): boolean;
begin
if (x mod 2 = 0) then
begin
result:= true;
mmAus.Lines.Add('Die Zahl ' + IntToStr(x) + ' ist Gerade');
mmAus.Lines.Add('Die Ausgabe befindet sich in der Funktion Even');
end
else
result:= odd(pred(x));
end;
procedure TForm1.btStartClick(Sender: TObject);
var
x: integer;
begin
x:= StrToInt(edZahl.Text);
even(x);
end;
end.