Die Fakultät kann sowohl iterativ, mit Hilfe von Schleifen, und auch rekursiv berechnet werden. Rekursiv wird die Fakultät wie folgt definiert:
Bei der rekursiven Programmierung ruft sich die Funktion selbst auf. Dabei sind die Abbruchbedingung und die Verankerung zentral. Bei n = 1 wird abgebrochen und der Wert 1 zurück gegeben.
In der folgenden Abbildung findet sich die Abbruchbedingung auf Zeile 2 und die Verankerung auf Zeile 3:
Bei jedem rekursiven Aufruf wird die nicht fertig bearbeitet Funktion auf dem Stapelspeicher (Stack) per push abgelegt. Wird ein Funktionsaufruf fertig abgearbeitet, so wird dieser mit pop vom Stack genommen.
Wird die maximale Grösse des Stapelspeichers überschritten, so resultiert ein Stapelüberlauf, englisch Stackoverflow. Ein Stapelüberlauf führt zu unerwünschtem Verhalten, meist zum Absturz des aufrufenden Programms.
PS: Für Stapelspeicher wird Kellerspeicher synonym verwendet. In der Simulation ist dieses Abtauchen in den Keller ersichtlich.