C - Recurrencia
La recursividad es el proceso de repetir elementos de una manera auto-similar. En los lenguajes de programación, si un programa le permite llamar a una función dentro de la misma función, entonces se llama una llamada recursiva de la función.
void recursion() {
recursion(); /* function calls itself */
}
int main() {
recursion();
}
El lenguaje de programación C admite la recursividad, es decir, una función para llamarse a sí mismo. Pero al usar la recursividad, los programadores deben tener cuidado de definir una condición de salida de la función, de lo contrario entrará en un bucle infinito.
Las funciones recursivas son muy útiles para resolver muchos problemas matemáticos, como calcular el factorial de un número, generar series de Fibonacci, etc.
Factorial numérico
El siguiente ejemplo calcula el factorial de un número dado usando una función recursiva:
#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;
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
Factorial of 12 is 479001600
Serie de Fibonacci
El siguiente ejemplo genera la serie de Fibonacci para un número dado usando una función recursiva:
#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;
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
0
1
1
2
3
5
8
13
21
34