In Python la funzione può chiamare se stessa e l'interprete impone un limite
Testo scritto con l’intelligenza artificiale a partire da una fonte citata, senza revisione umana prima della pubblicazione.
La ricorsione è utile per strutture nidificate come gli alberi, ma Python solleva RecursionError quando si supera la profondità massima.
Esegui function() che richiama function() senza sosta e ottieni un traceback con la stessa riga ripetuta centinaia di volte. Poi l’eccezione: RecursionError, “maximum recursion depth exceeded”1.
Una funzione può chiamare se stessa. Ogni chiamata crea un nuovo spazio dei nomi locale. Variabili con lo stesso nome convivono in frame diversi senza conflitti. Nell’esempio del tutorial, function() assegna x = 10 e poi si richiama. Ogni esecuzione crea un nuovo contesto con la propria x. La catena continua finché l’interprete raggiunge la profondità massima permessa, quindi alza RecursionError1.
Questa tecnica si chiama ricorsione. In programmazione ha un significato preciso: una funzione che si invoca da sola. Il tutorial parte da qui e mostra quando conviene usarla, come strutturarla, e come implementarla in Python1.
Perché usarla: alcuni problemi si esprimono in modo naturale con definizioni autoreferenziali. L’esempio fuori dal codice è l’insieme degli antenati definito in termini degli antenati dei genitori. Nel codice, l’attraversamento di strutture ad albero è il caso tipico. Sono annidate, quindi la visita ricorsiva risulta lineare da scrivere e leggere. Il materiale confronta soluzioni ricorsive con alternative non ricorsive sugli stessi problemi1.
Quando evitarla: molti problemi si risolvono anche senza ricorsione. Una versione ricorsiva può risultare goffa rispetto a una iterativa. Spesso consuma più memoria, a volte è più lenta. La leggibilità pesa più del resto, ma la scelta dipende dal contesto specifico1.
Cosa succede in Python durante le chiamate: il modello delle funzioni isola i nomi in spazi locali distinti. Più istanze della stessa funzione possono essere attive in contemporanea, ognuna con le proprie variabili. Questo consente la ricorsione, ma espone al rischio di catene infinite se manca un caso base. L’interprete previene il blocco imponendo un limite al numero di chiamate annidate. Quando lo supera, genera RecursionError, come nel traceback riportato dal tutorial1.
Il percorso didattico copre quattro snodi: che cosa significa chiamarsi ricorsivamente, come il design delle funzioni Python supporta questa tecnica, quali fattori valutare prima di adottarla e come scrivere una funzione ricorsiva corretta. Poi passa agli esempi, con versioni ricorsive e non ricorsive a confronto per chiarire compromessi di chiarezza, memoria e tempo di esecuzione1.
Sul piano lessicale, il tutorial ricorda l’origine della parola recursion dal latino recurrere, “tornare indietro”. Propone anche definizioni sintetiche tratte da dizionari, utili per inquadrare l’idea di definizione in termini di se stessa. Servono a legare gli esempi del mondo reale al codice1.
Se vuoi esercitarti, il tutorial offre due strumenti pratici: un pacchetto di esempi da scaricare e un quiz interattivo che valuta la comprensione di casi base, struttura ricorsiva, prestazioni e casi d’uso. Sono un modo rapido per verificare la teoria e passare al codice, senza partire da zero1.
Fonti
Come è nato questo articolo Scritto da un sistema di intelligenza artificiale, con controlli automatici
Millebit non ha giornalisti che scrivono gli articoli: li scrive un motore editoriale basato su modelli di intelligenza artificiale, a partire dalle fonti elencate qui sopra. Prima di uscire, ogni testo passa questi controlli:
- Rilettura. Un passaggio toglie i tic della prosa generata da un modello, come i contrasti costruiti e le frasi che annunciano invece di informare, senza toccare fatti e fonti.
- Fedeltà alle fonti. Un passaggio dedicato toglie ogni affermazione che le fonti non sostengono. Valutazione su questo pezzo: 9/10.
- Anti-cliché. Un filtro scarta frasi fatte, enfasi e tic della prosa artificiale: superato.
- Giudizio editoriale. Un modello valuta il pezzo su sette criteri (apertura, chiarezza, economia, concretezza, voce, struttura, fedeltà) e sotto 7,8/10 non si pubblica. Questo articolo ha preso 8,1/10 dopo 2 revisioni.
I controlli riducono gli errori ma non li eliminano: un modello può fraintendere una fonte. Per le decisioni importanti, risali alla fonte originale. Se trovi un errore, segnalacelo.
Per vedere Millebit nelle notizie principali di Google, aggiungilo alle tue fonti preferite. Oppure segui l’edizione di oggi, il feed RSS o La Sintesi.