Function albero(firstfolder As Folder) As Boolean
For Each file In firstfolder.Files
'scorri i file della directory
next file
For Each subfolderX In firstfolder.SubFolders
ok = albero(subfolderX)
Next subfolderX
End Function
Commenti:
Allora, vediamo da dove cominciare.
Immagina di trovarti sotto c:\ dove hai 3 directory: a,b,c
a però presenta altre 2 sottodirectory a1, a2.
Iniziamo a vedere il codice
L'esecuzione parte: siamo in c:\: vediamo tutti i files sotto questa root, poi passiamo al ciclo: per ogni directory sotto stante c, richiama la stessa funzione e rifai il ciclo. Il programma arriva nel ciclo di for alla prima directory a: la funzione richiama se stessa (RICORSIONE,appunto) passando a come parametro. Intanto si è creato lo stack, su c:\a. Inizia il ciclo dentro a, si passa ad a1, poi a2, e si torna alla chiamta superiore, quella dove abbiamo passato come parametro a. Non ci sono più sottodirectory per a, allora si esce dalla funzione, e si torna al punto dove a è stata attivata la ricorsione, ricordi? nel ciclo di for a c:\a, directory successiva...e così via.
Ogni volta che si crea lo stack, il codice si ferma nel punto di chiamata della funzione, e ci ritorna solo quando ha finito di processare la funzione chiamata, restituendo i valori generati.
Nel caso del Fattoriale, è la stessa cosa. Solo che viene ritornato un valore, e restituito al chiamante, che a sua volta lo passa al chiamante "creditore "...
E così via
Spero di essermi spiegato
Buon lavoro
fabio