Come fare la sommatoria in Ocaml

Nel linguaggio Ocaml la sommatoria si realizza tramite una semplice funzione ricorsiva

let rec sommatoria (f,n,m) =
if n>m then 0
else f(n) + sommatoria(f,n+1,m)

Dove n e m sono rispettivamente l'indice iniziale e finale della sommatoria.

La funzione richiama se stessa per m-n volte.

esempio di serie numerica

E' utile per calcolare una serie numerica in Ocaml o, più in generale, secondo il paradigma di programmazione funzionale.

Codice alternativo

Posso realizzare la stessa funzione in modo più efficiente tramite la tail recursion

let rec sommatoria(f,n,m,s) =
if n>m then s
else sommatoria(f,n+1,m,(s+f(n)));;

Questo codice raggiunge lo stesso risultato impegnando un minore spazio di memoria, perché le somme parziali sono trasmesse con un parametro aggiuntivo (s) durante la ricorsione.

Al termine dell'ultima ricorsione viene restituita la sommatoria senza fare altri calcoli.

    Un esempio pratico

    In questo script definisco la funzione raddoppia che calcola il doppio di un numero.

    Poi definisco la funzione ricorsiva della sommatoria.

    let radodoppia x = 2*x
    let rec sommatoria (f,n,m) =
    if n>m then 0
    else f(n) + sommatoria(f,n+1,m)

    Ora calcolo la sommatoria da 1 a 5 della funzione raddoppia

    sommatoria(raddoppia, 1, 5)

    Il risultato è

    - : int = 30

    che coincide con la serie parziale della funzione

    il calcolo della sommatoria

    In questo modo posso calcolare una serie matematica tramite un linguaggio funzionale come Ocaml.

    E così via.

     


     

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

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Ocaml