In questo tutorial, impareremo la funzione ricorsiva in C ++ e il suo funzionamento con l'aiuto di esempi.
Una funzione che chiama se stessa è nota come funzione ricorsiva. E questa tecnica è nota come ricorsione.
Utilizzo della ricorsione in C ++
void recurse() (… recurse();… ) int main() (… recurse();… )
La figura seguente mostra come funziona la ricorsione chiamando se stessa più e più volte.
![](https://cdn.wiki-base.com/6201887/c_recursion_with_example.png.webp)
La ricorsione continua finché non viene soddisfatta una condizione.
Per prevenire la ricorsione infinita, è possibile utilizzare l'istruzione if… else (o un approccio simile) dove un ramo effettua la chiamata ricorsiva e l'altro no.
Esempio 1: fattoriale di un numero utilizzando la ricorsione
// Factorial of n = 1*2*3*… *n #include using namespace std; int factorial(int); int main() ( int n, result; cout <> n; result = factorial(n); cout << "Factorial of " << n << " = " < 1) ( return n * factorial(n - 1); ) else ( return 1; ) )
Produzione
Immettere un numero non negativo: 4 Fattoriale di 4 = 24
Elaborazione del programma fattoriale
![](https://cdn.wiki-base.com/6201887/c_recursion_with_example_2.png.webp)
Come possiamo vedere, la factorial()
funzione chiama se stessa. Tuttavia, durante ogni chiamata, abbiamo diminuito il valore di n di 1
. Quando n è minore di 1
, la factorial()
funzione alla fine restituisce l'output.
Vantaggi e svantaggi della ricorsione
Di seguito sono riportati i pro ei contro dell'utilizzo della ricorsione in C ++.
Vantaggi della ricorsione C ++
- Rende il nostro codice più breve e più pulito.
- La ricorsione è richiesta in problemi riguardanti strutture dati e algoritmi avanzati, come Graph e Tree Traversal.
Svantaggi della ricorsione C ++
- Richiede molto spazio nello stack rispetto a un programma iterativo.
- Utilizza più tempo del processore.
- Può essere più difficile eseguire il debug rispetto a un programma iterativo equivalente.