はじめに:
最近のインタビューで、挑戦的な質問がありました。 arose: 任意の大きな数値の階乗を計算しながら、そのすべての桁を同時に表示します。 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; }
説明:
このコードは、階乗を表すために整数配列 'arr' を使用します。関数「factorial」は階乗を再帰的に計算し、それを「arr」に保存します。関数 'display' は 'arr' のゼロ以外の数字を出力し、階乗の読みやすさを保証します。
結論:
提示されたアプローチは、外部ライブラリを使用せずに任意の大きな数の階乗を計算します。配列ベースの表現を利用して階乗のすべての桁を取得し、それらを完全に表示します。この方法は、インタビューの要件を満たすだけでなく、プログラミングにおける数値操作の基礎となる原則を理解することの重要性を強調します。
以上が外部ライブラリを使わずに任意に大きな数の階乗を計算して表示するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。