Sobes.tech
Junior

Qual è la differenza tra l'implementare lo stesso compito usando ricorsione e un ciclo?

sobes.tech AI

Risposta dell'AI

La ricorsione utilizza la chiamata della stessa funzione per risolvere un problema, suddividendolo in sotto-compiti più piccoli fino al caso base. Il ciclo, invece, ripete un blocco di codice un numero determinato di volte o fino al soddisfacimento di una condizione.

Caratteristica Ricorsione Ciclo
Esecuzione Chiamata di funzione Iterazione
Memoria Usa lo stack di chiamate Usa variabili di contatore/condizione
Leggibilità Può essere più conciso per alcuni compiti Spesso più diretto
Prestazioni Può essere più lento a causa dei costi di chiamata Generalmente più efficiente
Sovraccarico dello stack Rischio di overflow in ricorsione profonda Nessun rischio di overflow dello stack

Esempio in C# (fattoriale):

Implementazione ricorsiva:

// Calcolo ricorsivo del fattoriale
int FactorialRecursive(int n)
{
    if (n == 0)
    {
        return 1; // Caso base
    }
    return n * FactorialRecursive(n - 1); // Chiamata ricorsiva
}

Implementazione con ciclo:

// Calcolo del fattoriale usando un ciclo
int FactorialIterative(int n)
{
    int result = 1;
    for (int i = 1; i <= n; i++)
    {
        result *= i;
    }
    return result;
}