DOMANDA
Che differenza c’è tra ricorsione e iterazione?
RISPOSTA
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.
Nessun commento:
Posta un commento