Thema: Fakultät C++
Einzelnen Beitrag anzeigen
Ungelesen 27.01.14, 20:43   #5
cortez442
Nur der Hamburger SV
 
Benutzerbild von cortez442
 
Registriert seit: Oct 2009
Beiträge: 474
Bedankt: 293
cortez442 ist unten durch! | -165 Respekt Punktecortez442 ist unten durch! | -165 Respekt Punkte
Standard

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.
cortez442 ist offline   Mit Zitat antworten