Cómo calcular "factorial"
También existe esta referencia:
Dado que el factorial crece muy rápido (más rápido que 2^n), para factoriales de números enteros más pequeños, puedes usar el algoritmo recursivo simple, pero para multiplicación de números enteros grandes (¡como 1000!), el algoritmo recursivo tradicional es inútil.
Como mi nivel no es alto, utilizo el siguiente método torpe para lograrlo. Por favor, dame algunos consejos de expertos. Los detalles son los siguientes: Defina una matriz muy larga y utilice cada elemento de la matriz para representar cada bit del resultado del cálculo. Por ejemplo, 7!=5040, a[1000], luego a[0]=0, a[1]=4, a[2]=0, a[3]=5.
Código fuente del programa:
/**
* Calcular el factorial de un número grande La idea principal del algoritmo es calcular un bit. de cada bit en la matriz El resultado calculado expresado: como calcular 5!
*(1) a[0]=1, luego a[0]=a[0]*2, a[0]=2,
*(2) a [0]=a[0]*3, a[0]=6
*(3) a[0]=a[0]*4, a[0]=24, en este momento a [1]=2, a[0]=4
*/
Clase pública Factorial
{
estático int a [ ] = nuevo int [10000];
factorial vacío estático(int n)
{
for(int i=2; i< a.length ; i++)
a[i] = 0; //Inicializar elementos de la matriz
a[0] = 1 //Usar un elemento en la matriz para guardar el número de dígitos. en el resultado del cálculo
a[1] = 1; //Asigna el primer elemento a un elemento
for(int j= 2; j <= n; j++) p>
{
int i=1;
int c = 0; //c significa redondear a dígitos altos
for(; i < = a[0 ]; i++)
{
a[i] = a[i] * j + c //Agrega el resultado del cálculo de orden inferior al resultado local.
c = a[i] / 10
a[i] = a[i] % 10; for(; c !
{
String num = args[0];
int count = 0;
int n = Integer.parseInt( num);
f(n);
for(int i= a[0]; i>0; i--)
{ p>
count++;
System.out.print(/*"a[" + i + "]=" + */a[i]/* + ""* /);
}
System.out.println("/n "+cuenta); p>
Trackback:/TrackBack.aspx?PostId=528778
Referencia:/hengshan/archive/2005/11/13/528778.aspx