Raku-Kurs / Grundlagen / Mehr über Funktionen / Übungen / Fakultät mit Multi-Funktionen
Lösung: Fakultät mit Multi-Funktionen
Diese Übung behandelt erneut Fakultäten. Tatsächlich ermöglicht uns die Aufgabe, weitere Funktionen von Raku zu veranschaulichen.
Wenn man eine Fakultät berechnet, indem man von der gegebenen Zahl ausgeht und abwärts zählt, muss man aufhören, wenn die Zahl 1 erreicht. Mit Multi-Funktionen kann man dies erreichen, indem man den Fall mit $n == 1
in eine separate Multi-Funktion auslagert.
Code
Hier ist die Lösung:
multi sub factorial(1) { 1 }
multi sub factorial($n) { $n * factorial($n - 1) }
say factorial(@*ARGS[0].Int);
🦋 Finde das Programm in der Datei factorial-with-multi-functions.raku.
Ausgabe
$ raku exercises/more-on-functions/factorial-with-multi-functions.raku 5
120
Kommentar
Beachte, dass das Eingabeargument explizit in einen Integer umgewandelt wird: @*ARGS[0].Int
. Dies soll eine Endlosschleife verhindern, wenn die Eingabezahl 1
ist. In diesem Fall ist der Typ des an die factorial
-Funktion übergebenen Parameters IntStr
, und die erste Multi-Variante kann den Aufruf nicht abfangen. Im Gegensatz dazu, wenn factorial(2 - 1)
rekursiv aufgerufen wird, ist das Argument der Funktion ein Integer, was es ermöglicht, die erste Variante aufzurufen.
Kursnavigation
← Erstellen und Aufrufen von Funktionen / Standardwerte | Eingebaute Funktionen zum Drucken →
Diese Seite wurde automatisch mit ChatGPT 4o übersetzt. Originaler englischer Text.
Übersetzungen dieser Seite: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська