FUNZIONI RICORSIVE

  1. Dato un vettore di interi positivi e la sua dimensione, scrivere (i) una funzione che ne calcoli la media, (ii) una che ne calcoli il massimo ed (iii) una che ne calcoli il minimo. Scrivere quindi una funzione main() per collaudare le funzioni implementate.

  2. Implementare le operazioni di prodotto ed esponente utilizzando le seguenti definizioni induttive di tali operazioni.
     prodotto(x,y) = 0                                        se y = 0,
     prodotto(x,y) = x + prodotto (x, y-1)                    se y > 0.
    
    
     esponente(x,y) = 1                                       se y = 0,
     esponente(x,y) = prodotto (x,esponente(x, y-1))          se y > 0.
    

  3. Scrivere una funzione ricorsiva che dato un array di interi restituisca il prodotto degli elementi in posizioni pari.

  4. Scrivere una funzione ricorsiva che legge un numero maggiore di 0 e stampa le sue cifre invertite.
    Esempio di interazione con il programma (in blu l'input dell'utente):

       Dammi un intero maggiore di 0: -9
       Dammi un intero maggiore di 0: 25138
       25138 con le cifre invertite e' 83152

  5. Scrivere una funzione ricorsiva che verifica se una porzione (da from a to) di un vettore di interi è palindroma. Una sequenza si dice palindroma se letta da sinistra a destra è identica a quando viene letta da destra a sinistra.

  6. Implementare la funzione di Ackermann A(m,n) definita come segue:
      A(m,n) = n + 1,                      se m=0 (caso base)
      A(m,n) = A(m-1, 1),                  se n=0 (caso ricorsivo)
      A(m,n) = A(m-1, A(m, n-1)),          altrimenti (caso ricorsivo) 
    
    Attenzione: cresce molto rapidamente (non elementare): A(x,x) cresce più rapidamente di qualsiasi catena di esponenziali.

  7. Scrivere una funzione ricorsiva che legge una sequenza di caratteri con un punto centrale, e verifica se tale sequenza è palindroma (ignorando gli spazi bianchi).

  8. Scrivere una funzione ricorsiva che implementa l'algoritmo di ricerca binaria. Tale funzione dato un array di interi ordinato e un intero in input verifica (sfruttando l'ordinamento) se tale intero appare nell'array. L'idea è quella di confrontare l'intero in input con l'elemento centrale dell'array se è quello cercato bene, altrimenti decidere, conseguentemente all'esito del confronto, su quale porzione dell'array richiamare la funzione ricorsiva.