ich habe ein Problem bei der Implementierung einer rekursiven Funktion.
Das folgende Beispiel hat in dieser Form natürlich keine praktiche Anwendung, es demonstriert lediglich meinen Versuch eine Rekursion zu bauen.
Die Funktion soll eigentlich die Zeichenfolge "funktioniert" liefern, passieren tut allerdings gar nichts. Ich hatte auch schon ein ShowMessage an den Anfang der Funktion gesetzt um herauszufinden, wie oft die Funktion aufgerufen wird. Es erscheint nur einmal eine Meldung, normalerweise müssten es jedoch 2 Aufrufe sein.
Code: Alles auswählen
unit unit1;
{$mode objfpc}{$H+}
interface
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ private declarations }
MaxValue: Integer;
function Test: String;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
function TForm1.Test: String;
var
Value: Integer;
begin
if MaxValue = 0 then
begin
Result := 'funktioniert';
Exit;
end;
Value := 1;
repeat
Inc(Value);
until Value = MaxValue;
MaxValue := 0;
Result := Test;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
MaxValue := 10;
ShowMessage(Test);
end;
end.Vielen Dank schonmal und viele Grüße
Kay