Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione funzionale / Ricorsione
Una subroutine ricorsiva
Una subroutine ricorsiva è una che chiama se stessa.
L’esempio classico è il fattoriale: il fattoriale di n è
n per il fattoriale di n - 1.
sub fact($n) {
$n <= 1 ?? 1 !! $n * fact($n - 1);
}
say fact(5); # 120Leggi il corpo come due casi uniti dall’operatore ternario
?? !!:
- quando
$nè1o meno, la risposta è semplicemente1; - altrimenti la risposta è
$nperfact($n - 1)— la stessa subroutine chiamata con un numero più piccolo.
Ogni chiamata stacca un fattore e chiede un fattoriale più piccolo,
finché il numero raggiunge 1 e le chiamate si srotolano:
fact(5) è 5 * fact(4), che è
5 * 4 * fact(3), e così via fino a 1.
La ricorsione esprime molti problemi in modo molto diretto. Ogni volta che un compito si può descrivere in termini di una versione più piccola di se stesso, una subroutine ricorsiva è spesso il modo più naturale di scriverlo.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Ricorsione | Quiz — Ricorsione →
💪 Oppure vai direttamente agli esercizi di questa
sezione.