n的阶乘溢出问题处理
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]); } }