Corso di Raku / Fondamenti / Più sulle funzioni / Esercizi / 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
120
Commento
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
← Creazione e chiamata di funzioni / Valori predefiniti | Funzioni integrate per la stampa →
Questa pagina è tradotta automaticamente con ChatGPT 4o. Testo originale in inglese.
Traduzioni di questa pagina: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська