Hier würde ich aber die iterative Lösung vorziehen - die ist ja hier trivial zu implementieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function Fakultaet(Zahl: integer): integer; var i : Integer; begin Result := 1; for i := 2 to Zahl do begin Result := Result * i; end; end; |
Es gibt natürlich Algorithmen - Quicksort z.B. - wo man sich für eine iterative Implementation einen abbricht, aber das ist ja hier nicht der Fall.
Um deine ursprüngliche Frage zu beantworten: Die Aufruftiefe ist normalerweise unkritisch. Windows kann den Stack so weit vergrößern, dass sich eine funktion hunderte von Malen selbst aufrufen kann, bevor du einen Stack-Überlauf bekommst. Viel eher brauchst du bei der Fakultät einen Datentyp, der größere Zahlen darstellen kann als es mit Integern oder selbst Int64 möglich ist - an diese Grenze stösst du viel schneller als an die maximale Rekursionstiefe.
Stefan