[C con Clase] programa (CARMEN VELASCO)

Alejandro Fernández cronopiomx en discapnet.es
Mar Abr 10 19:30:04 CEST 2012


si lo que quieres e saber calcular el factorial de 1 numero, lo puedes
hacer iterativo o recursivo, no obstante un metodo normal programado podra
calcular factoriales  cerca del numero 20, ya que 20!, es verdaderamente
muy grande, existen otras transformaciones mas grandes, pero no van mas
alla de 100!, tienes que probar, aca te dejo las implementacion del
factorial y el bigFactorial...
saludos
alex

El Factorial es definido por Fac(n) = n * Fac(n-1).
Ejemplo
Fac(3) = 3 * Fac(2)
Fac(3) = 3 * 2 * Fac(1)
Fac(3) = 3 * 2 * 1 * Fac(0)
Fac(3) = 3 * 2 * 1 * 1
Fac(3) = 6

Recursivo
int factorialR(int n) {
    if (n!=0) return n*fact(n-1);
    elsee return 1;   
}

Iterativo
long factorialIt(int n) {
int i,result = 1;
for (i=0; i<n; i++) result *= i;
   return result;
}

BigNumber
#include<stdio.h>
#include<string.h>
char f[10000];
char factorial[1010][10000];
void multiply(int k){
int cin,sum,i;
int len = strlen(f);
cin=0;
i=0;
while(i<len){
sum=cin+(f[i] - '0') * k;
f[i] = (sum % 10) + '0';
i++;
cin = sum/10;
}
while(cin>0){
f[i++] = (cin%10) + '0';
cin/=10;
}
f[i]='\0';
for(int j=0;j<i;j++)
factorial[k][j]=f[j];
factorial[k][i]='\0';
}

void fac(){
int k;
strcpy(f,"1");
for(k=2;k<=1000;k++)
multiply(k);
}
void print(int n){
int i;
int len = strlen(factorial[n]);
printf("%d!\n",n);
for(i=len-1;i>=0;i--){
printf("%c",factorial[n][i]);
}
printf("\n");
}
int main(){
int n;
factorial[0][0]='1';
factorial[1][0]='1';
fac();
while(scanf("%d",&n)==1){
print(n);
}
return 0;
}








Más información sobre la lista de distribución Cconclase