🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Esercizi Funzioni Ricorsive C

Codegrind Team•Jul 12 2024

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