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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per