1. 程式人生 > 實用技巧 >n的階乘溢位問題處理

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]); } }