Corso di Raku / Fondamenti / Fondamenti delle funzioni / Più sulle funzioni / Exercises / Fattoriale con multi-funzioni
Soluzione: Fattoriale con multi-funzioni
Questo esercizio riguarda ancora i fattoriali. Infatti, il compito ci permette di illustrare più caratteristiche di Raku.
Quando si calcola un fattoriale partendo dal numero dato e andando
verso il basso, è necessario fermarsi quando il numero arriva a 1. Con
le multi-funzioni, puoi ottenere ciò estraendo il caso con
$n == 1 in una multi-funzione separata.
Codice
Ecco la soluzione:
multi sub factorial(1) { 1 }
multi sub factorial($n) { $n * factorial($n - 1) }
say factorial(@*ARGS[0].Int);🦋 Trova il programma nel file factorial-with-multi-functions.raku.
Output
$ raku exercises/more-on-functions/factorial-with-multi-functions.raku 5
120Commento
Nota che l’argomento di input è esplicitamente convertito in un
intero: @*ARGS[0].Int. Questo per prevenire un loop
infinito quando il numero di input è 1. In questo caso, il
tipo di parametro passato alla funzione factorial è IntStr,
e la prima variante multi non può catturare la chiamata. Al contrario,
quando factorial(2 - 1) è chiamato ricorsivamente,
l’argomento della funzione è un intero, il che rende possibile chiamare
la prima variante.
Navigazione del corso
← Fattoriale con multi-funzioni | Funzioni integrate per la stampa →