Wie muss man sich einen rekursiven Code vorstellen?

Bei einer Rekursion wird eine Frage mit einer Frage beantwortet.

Will man beispielsweise die Faktorielle von 3 berechnen (3!), kann man das tun, indem man die Faktorielle von 2 berechnet und das Resultat mit 3 multipliziert.
Stellt sich freilich die Frage, was die Faktorielle von 2 ist. Diese Frage wird nach dem gleichen Schema beantwortet. Man stellt sich die Frage, was die Faktorielle von 1 ist und multipliziert das Ergebnis mit 2.
Die Frage nach der Faktoriellen von 1 wird nicht durch einen weitere Frage beantwortet, sondern ist per Festlegung 1. Somit ist die Beantwortung der Frage nach der Faktoriellen von 2 einfach zu beantworten: 1 · 2 = 2
Die Beantwortung der Frage nach der Faktoriellen von 3 erfolgt dann analog: 2 · 3 = 6

 ⭣ ⭡6
fact(3) = 3 * fact(2)
               ⭣ ⭡2
              fact(2) = 2 * fact(1)
                             ⭣ ⭡1
                            fact(1) = 1

Eine Rekursion benötigt immer ein Abbruchkriterium. Im oben ausgeführte Beispiel ist das der Aufruf der Faktoriellen mit dem Argument 1.

Code-Beispiel:

public static int fact(int n) {
    if (n > 1) {
        return n * fact(n - 1); // Rekursion
    } else {
        return 1; // Abbruchkriterium
    }
}