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