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.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Ocaml