Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Qualsiasi funzione in un programma C può essere chiamata in modo ricorsivo, vale a dire che può chiamare se stessa. Il numero di chiamate ricorsive è limitato alla dimensione dello stack. Vedere l'opzione /STACK
del linker (Allocazioni stack) per informazioni sulle opzioni del linker che impostano le dimensioni dello stack. Ogni volta che viene chiamata la funzione, viene allocata una nuova risorsa di archiviazione per i parametri e per le auto
variabili e register
in modo che i relativi valori nelle chiamate non completate precedenti non vengano sovrascritti. I parametri sono solo accessibili direttamente all'istanza della funzione in cui vengono creati. I parametri precedenti non sono accessibili direttamente a istanze che seguono la funzione.
Si noti che le variabili dichiarate con static
l'archiviazione non richiedono una nuova risorsa di archiviazione con ogni chiamata ricorsiva. La relativa archiviazione disponibile esiste per la durata del programma. Ogni riferimento a tale variabile accede alla stessa area di archiviazione.
Esempio
In questo esempio sono illustrate le chiamate ricorsive:
int factorial( int num ); /* Function prototype */
int main()
{
int result, number;
.
.
.
result = factorial( number );
}
int factorial( int num ) /* Function definition */
{
.
.
.
if ( ( num > 0 ) || ( num <= 10 ) )
return( num * factorial( num - 1 ) );
}