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: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська