Cos'è un algoritmo ricorsivo ?
Pensate di dire ad un programma di entrare nella cartella principale del vostro computer e leggere le cartelle che contiene.
Ditegli poi di consultare una cartella dopo l'altra e cercare le cartelle che a sua volta contiene.
E così via.
La logica è sempre la stessa, i dati di partenza cambiano.
Se nella root abbiamo un 3 cartelle il nostro indice di "cose trovate" conterrra:
$a[0]="c:/cartella uno";
$a[1]="c:/cartella due";
$a[2]="c:/cartella tre";
Vediamo la cartella uno: contiene due cartelle.
$a[3]="c:/cartella uno/prima";
$a[4]="c:/cartella uno/seconda";
Da una parte quindi c'è un software che legge tutte le cartelle e le mette in un unico elenco, che aumenta sempre piu'.
Dall'altra parte invece ci sarà un altro software (o un'altra funzione) che parte da $a[0] e va avanti.
I due processi possono procedere quindi separatamente, con maggiore efficienza, senza dover aspettare l'uno che l'altro finisca.
E senza bisogno di creare una funzione per ogni cartella.
Non si tratta di semplici loop. Si tratta di potersi adattare ad un numero non quantificabile a priori di dati.
Un pò come quando un bambino non ottiene quello che chiede e comincia a richiedere la stessa cosa in ogni contesto nel quale lo metterete.