=== Esercitazioni: Programmazione Funzionale === **Esercizio 1** Definire la funzione //mcd// che ricevuto in input i valori interi //a// e //b// calcola il loro //massimo comun divisore//. **Esercizio 2** Definire la funzione //isPrime// che ricevuto in input il valore intero //n// restituisce //true// se questo รจ primo, //false// altrimenti. **Esercizio 3** Definire la funzione //primeFactors// che ricevuto in input in intero //n// calcola la lista dei suoi fattori primi. **Esercizio 4** Definire il modulo //BSTree// che contiene tipi di dato e funzioni per gestire gli alberi binari di ricerca come visto a lezione. **Esercizio 5** Aggiungere al modulo //BSTree// definito nell'Esercizio 4 la funzione //size// che dato un albero //t// calcola il numero di elementi presenti in //t//. **Esercizio 6** Aggiungere al modulo //BSTree// definito nell'Esercizio 4 la funzione //height// che dato in input un albero //t// restituisce la sua altezza (si assume che l'altezza di un albero vuoto sia //0//). **Esercizio 7** Aggiungere al modulo //BSTree// definito nell'Esercizio 4 la funzione //balance// che ricevuto un albero //t// restituisce un albero //t1// con gli stessi elementi di //t// ma con un miglio bilanciamento. **Esercizio 8** Definite il modulo //AVLTree// che gestisce gli alberi AVL.