Hey ihr,
hab grad nen Problem mit der Rekursion. Sollten Fakultäten auf zwei Wegen berechnen - iterativ (Button1) und rekursiv (Button2):
Delphi-Quellcode:
function fakultaet (a: integer) : integer;
begin
if a>0 then
result := a * fakultaet(a-1)
else result:=1;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var text, i, ergebnis : integer;
begin
text:=StrToInt(Edit1.Text);
ergebnis:=1;
for i:=1 to text do begin
ergebnis:=ergebnis*i;
Label1.Caption:=IntToStr(ergebnis);
end;
if text=0 then Label1.Caption:=IntToStr(1); //(0!=1)
if text<0 then Label1.Caption:='Bitte geben Sie eine natürliche Zahl ein!'; //text\in N
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
var k : integer;
begin
k:=fakultaet(StrToInt(Edit1.Text));
Label1.Caption:=IntToStr(k);
end;
Mein Problem bezieht sich auf die Funktion fakultaet. Und zwar habe ich durch Recherche die Variable "result" gefunden und versuchsweise eingefügt - mysteriöserweise funktioniert es auch, obwohl ich result nirgends bewusst definiert habe (vordefiniert???) und es sonst auch nicht in dieser *.pas-Datei auftaucht.
Nehme ich als Variable irgendetwas anderes, meckert er wieder wegen einer undefinierten Variable - wo soll ich die denn definieren? Definiere ich es so
Delphi-Quellcode:
function fakultaet (a: integer) : integer;
var zwsp : integer;
begin
if a>0 then
zwsp := a * fakultaet(a-1)
else zwsp:=1;
end;
komme ich auch nicht weiter, ich erhalte immer dasselbe Ergebnis 43tausend und ein paar zerquetschte (auch wenn ich zwsp als integer definiere).
Woher kommt nu die vordefinierte "result"-Variable und wie bastel ich das Programm ohne eben diese zusammen`?
Bitte helft mir ^^