帮我写C++高精度阶乘的代码
时间: 2024-09-24 12:19:39 浏览: 29
C++ 高精度求阶乘之和
在C++中编写高精度阶乘的代码通常会使用字符串或者数组来存储大整数,因为C++标准库本身并没有提供直接支持任意大小整数的数据类型。这里是一个简单的例子,使用数组来实现高精度计算:
```cpp
#include <iostream>
#include <string>
// 定义一个大整数类,用于存储和操作高精度数字
class BigInt {
private:
std::vector<unsigned long long> digits;
public:
BigInt() : digits(0) {}
// 构造函数,接受一个整数作为输入
BigInt(unsigned long long n) {
if (n == 0)
digits.push_back(1);
else {
digits.resize(n + 1);
for (unsigned i = 1; i <= n; ++i)
digits[i] = i;
}
}
// 高精度乘法,递归实现阶乘
BigInt factorial() const {
if (digits[0] != 1) return BigInt(digits[0]) * factorial();
return BigInt(1);
}
// 打印大整数
void print() const {
for (size_t i = digits.size(); i > 0; --i)
std::cout << digits[i - 1];
std::cout << '\n';
}
};
int main() {
BigInt n;
std::cout << "Enter a non-negative integer for its factorial: ";
std::cin >> n;
BigInt result = n.factorial();
std::cout << "Factorial of " << n << " is: ";
result.print();
return 0;
}
```
阅读全文