Ist halt aufgebaut, wie eine rekursive Funktion aufgebaut werden muss. Man hat eine Abbruchbedingung und einen rekursiven Pfad. Der Abbruchpfad ist offensichtlich Zahl <=1. Bleibt also noch zu klären, wozu der rekursive Pfad führt. Die Funktion ruft sich solange mit dem der um 1 dekrementierten Zahl selber auf, bis die Zahl am Ende 1 ist (Sollte der Startwert <= 1 sein, tritt natürlich die Abbruchbedingung in Kraft und 1 ausgegeben).
Am Ende hast du einen Rattenschwanz von rekursiven Aufrufen in deinem Stack, der rückwärts wieder abgearbeitet wird. Der letzte Aufruf (bzw. der, der als erstes abgearbeitet wird) gibt dir 1 zurück. Dieser Wert wird an die aufrufende Instanz übergeben und mit dem Wert multipliziert (in den Fall die 2). Also haben wir 2! = 2. Dieser Wert wird abermals an die vorherige Instanz übergeben und mit der Zahl multipliziert. Also haben wir die 2 als Rückgabe der eben aufgelösten Instanz, welche mit der 3 multipliziert wird. 2 * 3 = 3! = 6. Das geht dann so weiter, bis die Funktion abgearbeitet ist.
__________________
Ein Fehler ist aufgetreten: der Vorgang wurde erfolgreich ausgeführt.
|