Cursus Raku / Essentiëlen / Basis van functies / Functies maken en aanroepen / Exercises / Recursieve faculteit
Oplossing: Recursieve faculteit
Faculteit is een zeer productieve oefening, omdat het op een aantal verschillende manieren kan worden opgelost. Deze keer gebruiken we recursie, wat betekent dat de functie vanuit zichzelf wordt aangeroepen.
Code 1
Hier is de code van de oplossing. Let op dat je de voorwaarde moet controleren om de recursie te stoppen, anders zal deze oneindig doorgaan.
sub factorial($n) {
if $n < 2 {
return 1;
}
else {
return $n * factorial($n - 1);
}
}
say factorial(10);🦋 Vind het programma in het bestand recursive-factorial.raku.
Code 2
In de gevallen, zoals getoond in deze code, is het vaak beter om
postfix vormen van if te gebruiken om onmiddellijk uit de
functie te retourneren. Deze aanpak maakt de code duidelijker en
verwijdert veel inspringing en interpunctie.
sub factorial($n) {
return 1 if $n < 2;
return $n * factorial($n - 1);
}
say factorial(10);🦋 Vind het bijgewerkte programma in het bestand recursive-factorial-2.raku.
Voorbeeld
Voer het programma uit en controleer het resultaat. Trouwens, wist je dat 10! exact het aantal seconden in zes weken is?
$ raku exercises/functions/recursive-factorial.raku
3628800