Es kann. Was Sie fragen, klingt wie memoization - Sie speichern frühere Ergebnisse, um Berechnungen später zu beschleunigen. Wenn Sie zum Beispiel 9! Berechnen, können Sie die Werte für 1 speichern! .. 9 !, und wenn Sie um 8 gebeten werden! später können Sie einfach den gespeicherten Wert zurückgeben. Auf ähnliche Weise können Sie, wenn Sie nach 10! Gefragt werden, 10 × 9 berechnen! schnell.
Die Sache ist die, dass Fakultäts (n) wächst so schnell, für große Werte von n Sie eine Menge Speicher mit am Ende können, so dass der Raum-Zeit-Handel nicht lohnen kann.
Eine weitere Funktion, die Memoization effektiv verwenden kann, ist das Berechnen von Fibonacci-Zahlen.
+1 für die iterative Ansatz zu erwähnen - ich denke, zu viele Menschen sind in Rekursion verliebt. Allerdings verstehe ich nicht Ihre Verwendung von "Stack"; Je nach dem Namen der Variablen verwenden Sie nur einen Akkumulator. – PTBNL
Rekursion ist schlecht, weil es zu Stapelüberläufen führen kann. Äh, nicht dass diese Seite schlecht ist ... – Beejor