简介:
在最近的一次采访中,一个具有挑战性的问题出现:计算任意大数的阶乘,同时显示其所有数字。虽然 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中文网其他相关文章!