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 } }