Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


7.10. Recursividad

Una función recursiva es aquella que se define a partir de ella misma. Dentro de las matemáticas tenemos varios ejemplos. Uno clásico es el "factorial de un número":

n! = n · (n-1) · (n-2) · ... · 3 · 2 · 1

(por ejemplo, el factorial de 4 es 4 · 3 · 2 · 1 = 24)

Si pensamos que el factorial de n-1 es

(n-1)! = (n-1) · (n-2) · (n-3) · ... · 3 · 2 · 1

Entonces podemos escribir el factorial de un número a partir del factorial del siguiente número:

n! = n · (n-1)!

Esta es la definición recursiva del factorial, ni más ni menos. Esto, programando, se haría:

/*---------------------------*/
/*  Ejemplo en C nº 70:      */
/*  C070.C                   */
/*                           */
/*  Funciones recursivas:    */
/*  factorial                */
/*                           */
/*  Curso de C,              */
/*    Nacho Cabanes          */
/*---------------------------*/

#include 

long fact(int n) {
  if (n==1)               /* Aseguramos que termine */
    return 1;
  return n * fact (n-1);  /* Si no es 1, sigue la recursión */
}

int main() {
  int num;
  printf("Introduzca un número entero: ");
  scanf("%d", &num);
  printf("Su factorial es: %ld\n", fact(num));
  
  return 0;
}

Dos consideraciones importantes:

¿Qué utilidad tiene esto? Pues más de la que parece: muchos problemas complicados se pueden expresar a partir de otro más sencillo. En muchos de esos casos, ese problema se podrá expresar de forma recursiva. Más adelante veremos algún otro ejemplo.

Ejercicios propuestos: