Índice

Ejemplos clásicos de funciones recursivas

A continuación se muestra un conjunto de ejemplos a menudo citados y muy interesantes para dominar la recursividad y la escritura de funciones recursivas.

1. Cálculos

a. Mostrar las cifras de un entero

Función recursiva:mostrar las cifras de un entero

Sea un entero de valor 45671. Se trata de mostrar sucesivamente los caracteres 4, 5, 6, 7, 1, y no el valor del entero. Para ello, mientras el resultado sea superior a 0, se hace el módulo 10 lo que da la última cifra, se divide entre 10 y se vuelve a comenzar. En iterativo da:

void cifrasIter(int val) 
{ 
   while (val>0){ 
       printf("%d_", val%10); 
       val/=10; 
   } 
}

La versión recursiva es muy simple; basta con reemplazar el bucle por una llamada recursiva:

void cifras(int val) 
{ 
   if (val>0){ 
      printf("%d_", val%10); 
      cifras(val/10); 
   } 
}

b. Producto factorial

Función recursiva:factorial

Un producto factorial es: n! = 1*2*3*...*n. Su definición es:

n!

n! = 1 si n=0

n! = n(n-1)! si n>0

Se trata de una función recurrente y se itera mientras n>0. A continuación se muestra una versión de la función iterativa:

int factIter (int n) 
{ 
int res=1; 
   while (n>1) 
      res*=n--;  // atención decremento después de la multiplicación 
   return res; 
}

En cierta forma, la versión recursiva puede parecer más fácil y más próxima a la definición ...