Funzioni ricorsive

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 la funzione viene chiamata, la nuova risorsa di archiviazione viene allocata per i parametri e per le auto variabili e register in modo che i valori delle 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 ) );
}

Vedi anche

Chiamate di funzione