Che differenza c’è tra ricorsione e iterazione?

Utente HTML.it
chiede

Che differenza c’è tra ricorsione e iterazione?

Redazione HTML.it
risponde

L’iterazione si realizza quando si eseguono
ripetutamente una o più righe di codice, in accordo al
verificarsi di determinate condizioni. Visual Basic mette a
disposizione tre tipi di strutture iterative: Do…
Loop, For… Next, For Each…
Next. La ricorsione, invece, è il processo che si
verifica quando una routine richiama se stessa, di norma su
porzioni di dati di volta in volta più piccole; in
presenza di ricorsioni incontrollate, cioè che non
prevedono una condizione di uscita, viene in genere visualizzato
il messaggio di errore Spazio dello stack
esaurito
. A titolo di esempio, ecco come si può
presentare un algoritmo per il calcolo del fattoriale di un
numero utilizzando l’iterazione oppure la ricorsione:

Private Sub FattorialeIterativo(N As Long)
Dim F As Long
F = 1
Do While N > 0
F = F * N
N = N – 1
Loop
MsgBox “Il fattoriale del numero (metodo iterativo) è: ” & F
End Sub

Private Function FattorialeRicorsivo(N As Long) As Long
If N = 0 Then
FattorialeRicorsivo = 1
ElseIf N = 1 Then
FattorialeRicorsivo = N
Else
FattorialeRicorsivo = N * FattorialeRicorsivo(N – 1)
End If
End Function

Di solito, un algoritmo ricorsivo è più compatto
dell’analogo iterativo, ma comporta un consumo di memoria
maggiore.