Cursus Raku / Essentiëlen / Basis van functies / Meer over functies / Exercises / 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
120Opmerking
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
← Faculteit met multi-functies | Ingebouwde functies voor het afdrukken →