[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