📢 Nuovo Corso Bootstrap Completo disponibile!

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;
}