Wie implementiert man Rekursion in Rust?
Hallo zusammen! Ich versuche, eine rekursive Funktion zur Berechnung der Fakultät in Rust zu implementieren, bin aber auf ein unerwartetes Problem gestoßen. Ich habe einfachen Code geschrieben:
fn factorial(n: u32) -> u32 {\n if n == 0 {\n 1\n } else {\n n * factorial(n - 1)\n }\n}\n\nfn main() {\n println!("{}", factorial(5));\n}Der Code kompiliert und funktioniert, aber wenn ich versuche, die Rekursionstiefe zu erhöhen (z.B. factorial(20000)), stürzt das Programm mit einem Stack Overflow ab. Ich weiß, dass Rust keine Tail-Call-Optimierung hat, und das ist zu erwarten. Ich möchte jedoch verstehen, wie man Rekursion in Rust richtig implementiert, wenn die Tiefe groß sein kann.
Was ich bereits versucht habe:
- Einen iterativen Ansatz mit einer Schleife zu verwenden (funktioniert, aber ich möchte speziell Rekursion)
- Ich habe versucht, eine tail-rekursive Funktion zu schreiben