決定大數的階乘
當結果超出本機資料型態的限制時,階乘的計算會帶來挑戰。本文介紹了一種計算任意大整數的階乘的技術,揭示解中的所有數字。
模擬手動計算
在沒有 GMP 等外部函式庫的情況下,我們必須使用整數陣列來模擬手動階乘計算的過程。此數組代表大數,每個索引保存一個數字。
階乘計算演算法
對於數字 n,階乘計算如下:
範例實作
提供的C程式碼實作了上述演算法:
#include <iostream> #include <cstring> int max = 5000; void display(int arr[]) { int ctr = 0; for (int i = 0; i < max; i++) { if (!ctr && arr[i]) ctr = 1; if (ctr) std::cout << arr[i]; } } void factorial(int arr[], int n) { if (!n) return; int carry = 0; for (int i = max - 1; i >= 0; --i) { arr[i] = (arr[i] * n) + carry; carry = arr[i] / 10; arr[i] %= 10; } factorial(arr, n - 1); } int main() { int *arr = new int[max]; std::memset(arr, 0, max * sizeof(int)); arr[max - 1] = 1; int num; std::cout << "Enter the number: "; std::cin >> num; std::cout << "Factorial of " << num << " is :\n"; factorial(arr, num); display(arr); delete[] arr; return 0; }
以上是如何在沒有外部函式庫的情況下計算任意大數的階乘?的詳細內容。更多資訊請關注PHP中文網其他相關文章!