C - Ricorsione
La ricorsione è il processo di ripetizione di elementi in modo auto-simile. Nei linguaggi di programmazione, se un programma consente di chiamare una funzione all'interno della stessa funzione, viene chiamata chiamata ricorsiva della funzione.
void recursion() {
recursion(); /* function calls itself */
}
int main() {
recursion();
}
Il linguaggio di programmazione C supporta la ricorsione, cioè una funzione per chiamare se stessa. Ma mentre si usa la ricorsione, i programmatori devono stare attenti a definire una condizione di uscita dalla funzione, altrimenti andrà in un ciclo infinito.
Le funzioni ricorsive sono molto utili per risolvere molti problemi matematici, come il calcolo del fattoriale di un numero, la generazione di serie di Fibonacci, ecc.
Numero fattoriale
L'esempio seguente calcola il fattoriale di un dato numero utilizzando una funzione ricorsiva -
#include <stdio.h>
unsigned long long int factorial(unsigned int i) {
if(i <= 1) {
return 1;
}
return i * factorial(i - 1);
}
int main() {
int i = 12;
printf("Factorial of %d is %d\n", i, factorial(i));
return 0;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Factorial of 12 is 479001600
Serie di Fibonacci
L'esempio seguente genera la serie di Fibonacci per un dato numero utilizzando una funzione ricorsiva -
#include <stdio.h>
int fibonacci(int i) {
if(i == 0) {
return 0;
}
if(i == 1) {
return 1;
}
return fibonacci(i-1) + fibonacci(i-2);
}
int main() {
int i;
for (i = 0; i < 10; i++) {
printf("%d\t\n", fibonacci(i));
}
return 0;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
0
1
1
2
3
5
8
13
21
34