Ricorsione

Se il linguaggio di programmazione prevede la ricorsione… una SUB A può chiamare la SUB A, se stessa, per svolgere lo stesso compito ma con un’stanza diversa

ricorsione

La SUB A chiama la SUB A … finché non succede qualcosa (l’istanza diventa un caso particolare che non necessita di un’ulteriore chiamata ricorsiva) e si ritorna all’indietro fino alla prima chiamata…

Per evitare di saturare le risorse hardware (RAM) le chiamate ricorsive non devono superare un certo numero (?).

C, C++, Java, …

void XYZ(parametri_formali)
{
    ...
    XYZ(parametri_attuali);
    ...
}
double XYZ(parametri_formali)
{
    ...
    x=XYZ(parametri_attuali);
    ...
    return espr;
}

Pascal

Procedure XYZ(parametri_formali);
...
Begin
    ...
    XYZ(parametri_attuali);
    ... 
End; 
Function XYZ(parametri_formali): Double;
...
Begin
    ...
    x=XYZ(parametri_attuali);
    ...
    XYZ:=espr;
End;

Python

def XYZ(parametri_formali):
    ...
    XYZ(parametri_attuali)
    ...
def XYZ(parametri_formali):
    ...
    x=XYZ(parametri_attuali)
    ...
    return espr

Visual Basic

Sub XYZ(parametri_formali)
    ...
    Call XYZ(parametri_attuali)
    ...
End Sub
Function XYZ(parametri_formali) As Double
    ...
    x=XYZ(parametri_attuali)
    ...
    XYZ=espr
End Function

Ricorsione?

  • multipla: nel codice del sottoprogramma la chiamata ricorsiva si presenta più volte (2…)
  • indiretta: il sottoprogramma chiama un altro sottoprogramma che a sua volta … che a sua volta chiama il primo …