Menu
Coddy logo textTech

Funzioni ricorsive

Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 8 di 68.

La ricorsione è una tecnica di programmazione in cui una funzione richiama sé stessa per risolvere un problema. Questo crea un comportamento simile a un ciclo, ma invece di usare i cicli tradizionali, la funzione richiama ripetutamente sé stessa con parametri modificati fino a raggiungere una soluzione.

Ogni funzione ricorsiva deve avere due componenti essenziali per funzionare correttamente:

Caso base: Questa è la condizione che interrompe la ricorsione. Senza di essa, la funzione chiamerebbe sé stessa all’infinito, causando il crash del programma. Il caso base definisce quando la funzione deve restituire un risultato invece di richiamare sé stessa.

Passo ricorsivo: È qui che la funzione richiama se stessa con una versione modificata del problema originale, avvicinandosi gradualmente al caso base.

Ecco un semplice esempio di funzione ricorsiva che calcola un fattoriale:

<?php
function factorial($n) {
    // Caso base: il fattoriale di 1 è 1
    if ($n <= 1) {
        return 1;
    }
    
    // Passo ricorsivo: n! = n * (n-1)!
    return $n * factorial($n - 1);
}

echo factorial(5);  // Restituisce: 120
?>

In questo esempio, factorial(5) chiama factorial(4), che chiama factorial(3), e così via, finché non raggiunge factorial(1) (il caso base). Poi i risultati si moltiplicano a ritroso: 1 × 2 × 3 × 4 × 5 = 120.

challenge icon

Sfida

Facile

Crea una funzione ricorsiva chiamata sumDigits che accetta un intero positivo e restituisce la somma delle sue cifre. La funzione deve usare la ricorsione per scomporre il numero cifra per cifra.

Riceverai un input: un intero positivo. Leggi l’input, chiama la tua funzione ricorsiva con quel numero e stampa la somma delle sue cifre.

Formato dell’input: Una riga contenente un intero positivo

Output previsto: La somma di tutte le cifre del numero

Provalo tu

<?php
// Leggi l'input
$number = intval(fgets(STDIN));

// TODO: Crea qui la tua funzione ricorsiva sumDigits


// Chiama la funzione e stampa il risultato
echo sumDigits($number);
?>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore PHP online