100以內的階乘計算方法
阿新 • • 發佈:2019-01-29
階乘計算雖然可以通過迴圈、遞迴或者使用靜態變數等方法實現,但是這些方法僅限於結果較小的情況。100的階乘有158位,顯然在使用C++時很難保證直接計算時不會產生溢位。
這裡可以採用陣列的方式儲存計算結果的每一位,然後按位計算階乘的大小,最後將結果以字串的方式輸出。
void Func(int n, char *pOut) { if(pOut == NULL) return; int chrs[256]; int idx(1); chrs[0] = 1; for(int i = 1; i <= n; i++) { int cry = 0; for(int j = 0; j < idx; j++) { chrs[j] = chrs[j] * i + cry; cry = chrs[j] / 10; chrs[j] %= 10; } while(cry > 10) { chrs[idx++] = cry % 10; cry /= 10; } if(cry > 0) chrs[idx++] = cry; } for(int i = idx - 1; i >= 0; i--) { *pOut++ = chrs[i] + '0'; } *pOut = '\0'; return; }