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

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 …