Acá tenés un ejemplo en C del factorial, lo podés compilar en c++ cambiando los include (por ej. de stdio.h a cstdio).
La función recursiva es fac.
Cualquier recursión se compone básicamente de 2 partes, el tratamiento de los casos base, y el de los inductivos. Para estos últimos se utilizan casos inductivos de menor 'tamaño'. El concepto de 'tamaño' depende de la naturaleza de los parámetros sobre los que se aplica la recursión.
En el caso del factorial, se hace inducción sobre los números naturales.
El caso base sería el 1 mientras que el inductivo cualquiera de la forma n>1.
Código:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
long fac(long n)
{
if(n<=1)
return 1;
else
return n*fac(n-1);
}
int main(int n,char **par)
{
long x;
int m;
if(n!=2)
{
printf("Llamado incorrecto\n");
return -1;
}
m = atol(par[1]);
if(m==INT_MAX || m==INT_MIN)
{
printf("Error de rango\n");
return -1;
}
if(m>19)
{
printf("Numero demasiado alto\n");
return -1;
}
x = fac(m);
printf("fac(%d): %ld\n",m,x);
return 0;
}
Saludos
Marcadores