Danke! Zu meinem Bedauern muss ich leider wieder fragrn stellen. Wie kann das programm denn nach und nach eins dazu addieren? Zuvor gab es ja beim methodenaufruf fac(n-1). Nirgends steht aber jetzt fac(n+1). Wieso macht er das dann?
Das macht es nicht. Der zitierte Code hat einen Fehler, außerdem wird immer SUBTRAHIERT, nicht addiert. Es wird beim höchsten Wert gestartet.
Ich glaube, dir ist nicht klar, was eine Rekursion ist.
Der Grundsatz einer Rekursion ist, dass eine Funktion die gleiche Funktion noch mal aufruft.
Diese Fakultätsfunktion ist ein Paradebeispiel einer rekursiven Funktion.
Damit man Fakultät(n) berechnen kann, muss man erst mal den Wert von Fakultät(n-1) kennen.
Der Aufruf Fakultät(5) bewirkt also, dass zuerst Fakultät(4) aufgerufen wird, das Ergebnis wird mit 5 multipliziert.
Fakultät (4) wiederum lässt als ersts Fakultät(3) berechnen und multpliziert das Ergebnis mit 4
Fakultät (3) wiederum lässt als ersts Fakultät(2) berechnen und multpliziert das Ergebnis mit 3
...
Das geht so weiter, bis der Aufruf bei Fakultät(0) ankommt.
Die Funktion weiß, dass Fakultät(0) den Wert 1 hat (steht in den beiden Zeile if (n==0) und Folgezeile) und stoppt den rekursiven Aufruf an dieser Stelle.
Anmerkung: Natürlich könnte man die Fakultät auch einfach mit einer Schleife berechnen anstatt mit einem rekursiven Aufruf, aber hier soll dir wohl klar gemacht werden, wie eine Rekursion arbeitet.