public static void factorial(int n) {
//传入阶乘的数字n
//创建保存结果的数组array
int[] array=new int[100];
array[0]=1;
//位数bit
int bit=1;
//进位carry
int carry=0;
for(int i = 2;i <= n; i++) {
//从2的阶乘开始计算,算到n
for(int j = 0; j < bit; j++) {
array[j] = array[j] * i;
}
for(int j = 0; j < bit-1; j++) {
//进位数
carry = array[j]/10;
//每个数组元素都只留下个位数
array[j] %= 10;
//上一位加上进位的结果
array[j+1] += carry;
}
//如果最高位大于等于10,那么需要再进一位
if(array[bit-1] >= 10) {
int temp = array[bit-1] / 10;
array[bit-1] %= 10;
//一直进位直到进位数为0
while(temp != 0) {
array[bit] = temp % 10;
temp /= 10;
bit++;
}
}
}
for(int m = bit - 1; m >= 0; m--) {
System.out.print(array[m]);
}
}