Función recursiva del factorial

#include <stdio.h>
 
long factorial( long numero ); /* prototipo de la función */
 
/* la función main comienza la ejecución del programa */
int main()
{
   int i; /* contador */
 
   /* repite 11 veces; durante cada iteración, calcula
      el factorial( i ) y despliega el resultado */
   for ( i = 0; i <= 10; i++ ) {
      printf( "%2d! = %ldn", i, factorial( i ) );
   } /* fin de for */
 
   return 0; /* indica terminación exitosa */
 
} /* fin de main */
 
/* definición recursiva de la función factorial */
long factorial( long numero )
{
   /* caso base */
   if ( numero <= 1 ) {
      return 1;
   } /* fin de if */
   else { /* paso recursivo */
      return ( numero * factorial( numero - 1 ) );
   } /* fin de else */
 
} /* fin de la función factorial */

¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)

Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.

Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:

  • Si es lenguaje C [c]Código en C[/c]
  • Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].

De esta manera el código coloreas el código.

Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:

Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.

¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)

Comentarios

2007-12-01 17:11:57
el
el mio esta mas corto

#include
#include
#include
 
int n,f;
int factorial(int n);
 
main()
{
printf("n!= "); scanf("%d",&amp;n);
f=factorial(n);
printf("n%d!= %d",n,f);
getch();
}
 
int factorial(int n)
{
int prod=1,i;
if ((n&gt;1) || (n&lt;-1))
for(i=2;i&lt;=abs(n);i++)
prod*=i;
if (n&lt;0) return(-prod);
return(prod);
}

2007-12-01 17:31:25
admin
De hecho es mas corto el mio, sólo que había muchos comentarios jeje.

y ademas es recursivo:

#include <stdio.h>
 
long factorial( long numero );
 
void main(){
int i;
for (i=0;i<=10;i++)
printf( "%2d! = %ldn",i,factorial(i));
}
 
long factorial( long numero ){
if(numero<=1)
return 1;
else
return(numero*factorial(numero-1));
}