← Torna al blog Algoritmi · 6 min di lettura

La ricorsione spiegata senza paura

📅 6 giugno 2026 — di Alessandro Simone

La ricorsione è uno di quegli argomenti che mettono ansia agli studenti. "Una funzione che chiama se stessa? Ma come è possibile?" In realtà, una volta capito il meccanismo, la ricorsione diventa uno strumento elegante e affascinante. In questa guida la spieghiamo senza formule complicate, con esempi in Python che puoi provare subito.

Cos'è la ricorsione?

Si parla di ricorsione quando una funzione, per risolvere un problema, richiama se stessa su una versione più piccola dello stesso problema. È un po' come le bambole russe (le matrioske): dentro ogni bambola ce n'è una più piccola, fino ad arrivare alla più piccola di tutte, che non si apre più.

I due ingredienti fondamentali

Ogni funzione ricorsiva, per funzionare correttamente, ha bisogno di due elementi:

Tieni a mente questa coppia: caso base e caso ricorsivo. È la chiave di tutto.

Esempio classico: il fattoriale

Il fattoriale di un numero n (scritto n!) è il prodotto di tutti i numeri da 1 a n. Ad esempio 5! = 5 × 4 × 3 × 2 × 1 = 120. La definizione è naturalmente ricorsiva, perché n! = n × (n-1)!:

def fattoriale(n):
    if n <= 1:          # caso base
        return 1
    return n * fattoriale(n - 1)   # caso ricorsivo

print(fattoriale(5))   # 120

Quando chiamiamo fattoriale(5), la funzione calcola 5 × fattoriale(4), che a sua volta calcola 4 × fattoriale(3), e così via, fino a fattoriale(1) che restituisce 1 e ferma la catena. Poi i risultati "risalgono" e si moltiplicano tra loro.

Come "ragiona" il computer

Ogni chiamata ricorsiva viene messa in attesa su una pila (lo "stack"), in attesa che la chiamata successiva restituisca un valore. Quando si raggiunge il caso base, la pila si svuota a ritroso. Visualizzarlo aiuta a non avere paura:

fattoriale(3)
= 3 * fattoriale(2)
= 3 * (2 * fattoriale(1))
= 3 * (2 * 1)
= 6

Un secondo esempio: Fibonacci

La serie di Fibonacci è un altro esempio perfetto: ogni numero è la somma dei due precedenti (0, 1, 1, 2, 3, 5, 8...). Anche qui la definizione è ricorsiva:

def fibonacci(n):
    if n <= 1:           # casi base: F(0)=0, F(1)=1
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)

print(fibonacci(7))   # 13

Nota che qui ci sono due casi base e due chiamate ricorsive. La ricorsione è flessibile e si adatta alla struttura del problema.

Ricorsione o ciclo?

Quasi tutti i problemi ricorsivi si possono risolvere anche con un ciclo (iterazione). Allora perché usare la ricorsione? Perché per alcuni problemi — come scorrere un albero o risolvere il gioco della Torre di Hanoi — la soluzione ricorsiva è molto più semplice ed elegante. Per altri, come Fibonacci, il ciclo è più efficiente perché evita di ricalcolare gli stessi valori più volte.

Gli errori più comuni

In sintesi

La ricorsione è una funzione che chiama se stessa fino a raggiungere un caso base che la ferma. Ricorda i due ingredienti — caso base e caso ricorsivo — e parti sempre da esempi semplici come il fattoriale. Con un po' di pratica, quello che oggi sembra magia diventerà uno strumento naturale del tuo modo di programmare.

Allenati con la ricorsione

Nella sezione esercizi trovi problemi su fattoriale, Fibonacci e altri classici, con soluzioni.

Vai ai corsi →