La ricorsione in tre minuti

Avete presente la canzone “Alla fiera dell’Est” di Angelo Branduardi?

Sì, certo ora non si può più cantare, troppo violenta e poco politically correct.

Il bastone che picchia il cane poi… non si può sentire, gli animalisti insorgono.

È una canzone che non mi è mai piaciuta proprio per questa parte, e poi il macellaio, ora che siamo tutti vegani…

In ogni caso è una canzone molto interessante dal punto di vista informatico e, infatti, l’ho rivalutata solo quando ho iniziato a fare la programmatrice.

È una canzone ricorsiva.

Comincia con

Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.

Alla Fiera dell’Est è il nome della funzione e ad ogni ripetizione di queste parole si ha un nuovo elemento, ovvero un nuovo grado di profondità della nostra funzione.

Si potrebbe andare all’infinito ma proprio per evitare questo c’è il verso

E infine il Signore

che chiude introducendo l’ultimo livello possibile e quando la funzione viene richiamata con

Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò

non può più essere introdotto un altro elemento e la canzone/funzione termina.

Ecco, sostituite le parole con istruzioni e avrete una funzione ricorsiva che ripeterà le stesse istruzioni per ogni livello di profondità e una condizione di uscita permette di terminare la ripetizione.

Tutto questo è molto utile per riprodurre i frattali e i sistemi di accrescimento naturali, come piante o anche cristalli. Questi elementi hanno infatti una struttura base che ripete sé stessa aggiungendo qualcosa per ogni grado di profondità. Proprio come nella canzone ad ogni ritornello si aggiunge un personaggio che in qualche modo ripete le istruzioni dei personaggi precedenti: mangiare, mordere, picchiare, bruciare, spegnere, … sempre azioni che in qualche modo distruggono il personaggio precedente.

Nel caso delle funzioni che imitano il sistema di accrescimento vegetale non c’è distruzione del precedente elemento ma addizione su di esso.

Ah, la canzone di Branduardi ha nove livelli di profondità.

E infine il Signore
sull’Angelo della Morte
sul macellaio
che uccise il toro
che bevve l’acqua
che spense il fuoco
che bruciò il bastone
che picchiò il cane
che morse il gatto
che si mangiò il topo
che al mercato mio padre comprò.
Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.

Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.
Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.
E venne il gatto
che si mangiò il topo che al mercato mio padre comprò.
E venne il gatto
che si mangiò il topo
che al mercato mio padre comprò.
Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.
E venne il cane
che morse il gatto
che si mangiò il topo
che al mercato mio padre comprò.
Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.
E venne il bastone
che picchiò il cane
che morse il gatto
che si mangiò il topo
che al mercato mio padre comprò.
Alla Fiera dell’Est per due soldi
un topolino mio padre comprò.
E venne il fuoco
che bruciò il bastone
che picchiò il cane
che morse il gatto
che si mangiò il topo
che al mercato mio padre comprò.
Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.
E venne l’acqua
che spense il fuoco
che bruciò il bastone
che picchiò il cane
che morse il gatto
che si mangiò il topo
che al mercato mio padre comprò.
Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.
E venne il toro
che bevve l’acqua
che spense il fuoco
che bruciò il bastone
che picchiò il cane
che morse il gatto
che si mangiò il topo
che al mercato mio padre comprò.
Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.
E venne il macellaio
che uccise il toro
che bevve l’acqua
che spense il fuoco
che bruciò il bastone
che picchiò il cane
che morse il gatto
che si mangiò il topo
che al mercato mio padre comprò.
Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.
E l’Angelo della Morte
sul macellaio
che uccise il toro
che bevve l’acqua
che spense il fuoco
che bruciò il bastone
che picchiò il cane
che morse il gatto
che si mangiò il topo
che al mercato mio padre comprò.
Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.
E infine il Signore
sull’Angelo della Morte
sul macellaio
che uccise il toro
che bevve l’acqua
che spense il fuoco
che bruciò il bastone
che picchiò il cane
che morse il gatto
che si mangiò il topo
che al mercato mio padre comprò.
Alla Fiera dell’Est
per due soldi
un topolino mio padre comprò.