10 Esercizi sulla ricorsione e funzioni ricorsive

Seguono 10 esercizi svolti sulle funzioni ricorsive e la ricorsione in C++, ma affrontabili anche con altri linguaggi di programmazione come C, java, python o pascal.

Non è sempre facile trovare o creare esercizi sulla ricorsione, le funzioni ricorsive sono un meccanismo affascinante per la risoluzione di problemi, ma di non immediata comprensione, per cui è bene fare esercizi.

Ricordiamo che la ricorsione si sviluppa quando si ha una funzione richiama sé stessa su un problema o su un dato di taglia minore (passo ricorsivo), fino ad arrivare a un problema di cui si conosce o può calcolare direttamente la soluzione (caso base).

Esercizio 1.
Creare una funzione ricorsiva per calcolare una funzione definita così:
per m>0 allora f(n,m) = 1+f(n,m-1)
per m=0 allora f(n,m) = n
Una volta implementata, provarla e dire cosa calcola la funzione.
Soluzione in C++.

Esercizio 2.
Creare una funzione ricorsiva che ricevuto un numero restituisce la somma delle cifre del numero se questa è minore di 10 o il risultato della ri-applicazione della funzione sulla somma delle cifre del numero altrimenti.
Esempi: f(15)=1+5=6, f(392)=f(14)=5 dove 3+9+2=14 e 1+4=5.
Soluzione in C++.

Esercizio 3.
Scrivere il codice di una funzione ricorsiva f(n) che restituisce 0 nel caso n sia dispari o zero, 1+f(n/2) altrimenti.
Soluzione in C++.

Esercizio 4
Scrivere il codice di una funzione ricorsiva f(n) che restituisce:
– n nel caso n sia minore di 10,
– il risultato di f applicata alla somma delle cifre di n se n è pari,
– f(n-1) altrimenti.
Soluzione in C++

Esercizio 5
Scrivere il codice di una funzione ricorsiva int f(int n) che restituisce quante coppie di cifre uguali in posizioni adiacenti ci sono nel numero n, nel caso n sia negativo restituisce 0.
Ad es: f(551122) restituisce 3, f(5122) restituisce 1, f(9) restituisce 0, f(444) restituisce 2.
soluzione in C++

Esercizio 6
Scrivere una funzione ricorsiva per calcolare l’ennesimo numero della serie di Fibonacci.
La serie di Fibonacci è una serie numerica in cui il numero ennesimo è dato dalla somma dei due numeri di Fibonacci che la precedono; i primi due numeri di Fibonacci sono 0 e 1.
Soluzione C++

Esercizio 7
Scrivere una funzione che dato un importo di denaro iniziale, un interesse annuo e un numero di anni permette di calcolare l’importo di denaro accresciuto degli interessi dopo il numero di anni passati.
Soluzione C++.

Esercizio 8
Scrivere una funzione che ricevuto un numero intero se il numero è negativo restituisce zero, se ha una sola cifra restituisce quella cifra, altrimenti restituisce la riapplicazione della stessa funzione al numero stesso dopo aver eliminato la prima occorrenza della cifra col valore minore presente nel numero.
Ad esempio f(12705)=f(1275)=f(275)=f(75)=f(7)=7
Soluzione C++

Esercizio 9
Scrivere una funzione ricorsiva che (senza usare cicli) ricevuti due numeri interi calcoli la somma di tutti i numeri dell’intervallo tra i due numeri, compresi i numeri stessi.
Soluzione C++

Esercizio 10
Scrivere una funzione ricorsiva che ricevuto un intero n stampi n ‘-‘ seguiti da n ‘+’.
Ad esempio se la funzione riceve 3 stampa – – – + + +.
Soluzione C++

Lascia un commento