Esercizi Funzioni Ricorsive C
Ecco degli esercizi semplici con soluzione per praticare le funzioni ricorsive in C.
Esercizio 1: Calcolo del Fattoriale
Scrivere una funzione ricorsiva per calcolare il fattoriale di un numero.
#include <stdio.h>
int fattoriale(int n) { if (n == 0) { return 1; } else { return n * fattoriale(n - 1); }}
int main() { int numero = 5; printf("Fattoriale di %d = %d\n", numero, fattoriale(numero)); return 0;}
Esercizio 2: Serie di Fibonacci
Scrivere una funzione ricorsiva per calcolare l'n-esimo numero della serie di Fibonacci.
#include <stdio.h>
int fibonacci(int n) { if (n <= 1) { return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); }}
int main() { int numero = 10; printf("Fibonacci di %d = %d\n", numero, fibonacci(numero)); return 0;}
Esercizio 3: Ricerca Binaria
Scrivere una funzione ricorsiva per eseguire una ricerca binaria in un array ordinato.
#include <stdio.h>
int ricerca_binaria(int arr[], int sinistra, int destra, int x) { if (destra >= sinistra) { int medio = sinistra + (destra - sinistra) / 2;
if (arr[medio] == x) return medio;
if (arr[medio] > x) return ricerca_binaria(arr, sinistra, medio - 1, x);
return ricerca_binaria(arr, medio + 1, destra, x); }
return -1;}
int main() { int arr[] = {2, 3, 4, 10, 40}; int n = sizeof(arr) / sizeof(arr[0]); int x = 10; int risultato = ricerca_binaria(arr, 0, n - 1, x); if (risultato != -1) printf("Elemento trovato all'indice %d\n", risultato); else printf("Elemento non presente nell'array\n"); return 0;}
Esercizio 4: Somma dei Numeri di un Array
Scrivere una funzione ricorsiva per calcolare la somma degli elementi di un array.
#include <stdio.h>
int somma_array(int arr[], int n) { if (n <= 0) { return 0; } else { return arr[n - 1] + somma_array(arr, n - 1); }}
int main() { int arr[] = {1, 2, 3, 4, 5}; int n = sizeof(arr) / sizeof(arr[0]); printf("Somma degli elementi dell'array = %d\n", somma_array(arr, n)); return 0;}
Esercizio 5: Contare il Numero di Cifre di un Numero
Scrivere una funzione ricorsiva per contare il numero di cifre di un numero intero.
#include <stdio.h>
int conta_cifre(int n) { if (n == 0) { return 0; } else { return 1 + conta_cifre(n / 10); }}
int main() { int numero = 12345; printf("Numero di cifre in %d = %d\n", numero, conta_cifre(numero)); return 0;}
Esercizio 6: Potenza di un Numero
Scrivere una funzione ricorsiva per calcolare la potenza di un numero dato una base e un esponente.
#include <stdio.h>
int potenza(int base, int esponente) { if (esponente == 0) { return 1; } else { return base * potenza(base, esponente - 1); }}
int main() { int base = 2; int esponente = 3; printf("%d elevato alla potenza di %d = %d\n", base, esponente, potenza(base, esponente)); return 0;}