Iterazioni in Ocaml
Nel linguaggio Ocaml le iterazioni si realizzano con la ricorsione. Non ci sono istruzioni specifiche per elaborare dei cicli e strutture condizionali while o for.
Come creare un ciclo con la ricorsione
Per sviluppare un ciclo definisco una funzione con almeno due parametri in ingresso che richiama se stessa ricorsivamente.
La ricorsione continua fin quando si verifica una condizione di uscita.
Esempio
Con questa funzione realizzo un algoritmo per ripetere n volte una stringa.
- let rec ciclo (n, stringa) =
- match n with
- 1 -> stringa
- | _ -> stringa^ciclo(n-1,stringa);;
- print_string(ciclo(5,"*"));;
Si tratta di una funzione ricorsiva.
Il funzionamento e il risultato finale è però identico a una struttura ciclica while.
ciclo(5,"*");;
Il risultato in output è
- : string = "*****"
A ogni ricorsione lo script richiama se stessa riducendo il valore della variabile n.
Quando la variabile n è uguale a uno, la ricorsione termina e il ciclo finisce.
Pertanto, n=1 è la condizione di uscita dal ciclo / ricorsione.
E così via.