Come calcolare il fattoriale in Ocaml
Questo programma scritto in linguaggio Ocaml calcola il fattoriale di un numero intero tramite una funzione ricorsiva.
let rec fattoriale n =
if n=1 then 1
else n*fattoriale(n-1);;
La funzione fattoriale accetta un parametro numerico in ingresso e lo memorizza nella variabile n.
Come funziona?
Se il valore di n è diverso da zero, la funzione richiama se stessa in modo ricorsivo per calcolare il prodotto tra n e il fattoriale del numero predecessore n-1.
Quando il valore di n è uguale a zero, la funzione restituisce 1 chiudendo la successione delle chiamate ricorsive.
fattoriale 4;;
- int = 24
In fattoriale 4! è uguale a 4·3·2·1 = 24
Un programma alternativo
In alternativa la stessa funzione per il calcolo del fattoriale posso realizzarla sviluppando una funzione ricorsiva tramite la logica del pattern matching.
let rec fattoriale = function
0 -> 1
| k -> k*fattoriale(k-1);;
Se il parametro in ingresso è zero, la funzione restituisce 1.
Se il parametro in ingresso è diverso da zero, la funzione memorizza il valore nella variabile locale k e calcola il prodotto tra k e il fattoriale del predecessore k-1.
Nota. Da notare che il nome della variabile locale k non è indicato come parametro in ingresso della funzione. Al posto di k avrei potuto usare qualsiasi altra lettera o letterale.
Il risultato finale è lo stesso
fattoriale 4;;
- int = 24
In fattoriale 4! è uguale a 4·3·2·1 = 24
E così via.