Cursus Raku / Essentiëlen / Meer over functies / Oefeningen / Faculteit met multi-functies
Oplossing: Faculteit met multi-functies
Deze oefening gaat weer over faculteiten. Inderdaad, de taak stelt ons in staat om meer functies van Raku te illustreren.
Bij het berekenen van een faculteit door te beginnen vanaf het gegeven getal en naar beneden te gaan, moet je stoppen wanneer het getal 1 wordt. Met multi-functies kun je dat bereiken door het geval met $n == 1
naar een aparte multi-functie te extraheren.
Code
Hier is de oplossing:
multi sub factorial(1) { 1 }
multi sub factorial($n) { $n * factorial($n - 1) }
say factorial(@*ARGS[0].Int);
🦋 Vind het programma in het bestand factorial-with-multi-functions.raku.
Uitvoer
$ raku exercises/more-on-functions/factorial-with-multi-functions.raku 5
120
Opmerking
Merk op dat het invoerargument expliciet wordt omgezet naar een integer: @*ARGS[0].Int
. Dit is om een oneindige lus te voorkomen wanneer het invoernummer 1
is. In dit geval is het type parameter dat aan de factorial
functie wordt doorgegeven een IntStr
, en de eerste multi-variant kan de oproep niet opvangen. Daarentegen, wanneer factorial(2 - 1)
recursief wordt aangeroepen, is het argument van de functie een integer, wat het mogelijk maakt om de eerste variant aan te roepen.
Cursusnavigatie
← Functies maken en aanroepen / Standaardwaarden | Ingebouwde functies voor het afdrukken →
Deze pagina is automatisch vertaald met ChatGPT 4o. Originele Engelse tekst.
Vertalingen van deze pagina: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська