Einzelnen Beitrag anzeigen

Ari

Registriert seit: 7. Jan 2007
Ort: Wilhelmshaven
37 Beiträge
 
#1

Rekursion - Berechnung von Fakultäten

  Alt 18. Sep 2007, 00:08
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 ^^
Ariane
  Mit Zitat antworten Zitat