簡介:
在最近的一次採訪中,一個具有挑戰性的問題出現:計算任意大數的階乘,同時顯示其所有數字。雖然 GMP 等外部庫提供了方便的解決方案,但必須探索完成此任務的替代方法。在這裡,我們提出了一種利用整數數組來表示階乘的方法,無需依賴外部函式庫。
方法:
實作:
#include <iostream> #include <cstring> int max = 5000; // Display all non-zero digits of the array 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]; } } // Calculate the factorial of 'n' and store it in 'arr' 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中文網其他相關文章!