c++利用 for 循环,求 1 到 n 的阶乘的和
时间: 2024-09-25 22:20:55 浏览: 60
在C++中,如果你想用`for`循环计算1到`n`所有自然数的阶乘之和,首先你需要计算每个数的阶乘,然后累加到总和上。由于直接计算较大数的阶乘可能会导致溢出,可以使用动态规划的思想存储中间结果来避免这个问题。这里是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
// 计算并存储前n个自然数的阶乘
std::vector<unsigned long long> factorialSum(int n) {
std::vector<unsigned long long> fact(n + 1, 1); // 初始化数组,1的阶乘为1
unsigned long long sum = 0;
for (int i = 2; i <= n; ++i) { // 从2开始,因为1的阶乘已经是1
fact[i] = fact[i - 1] * i; // 计算当前数的阶乘
sum += fact[i]; // 累加到总和
}
return {sum, fact}; // 返回总和和阶乘系列(用于后续的计算)
}
int main() {
int n;
std::cout << "请输入一个正整数: ";
std::cin >> n;
if (n < 0) {
std::cout << "负数没有阶乘之和。\n";
} else {
auto [total_sum, fact_array] = factorialSum(n);
std::cout << "1到" << n << "的阶乘和是: " << total_sum << "\n";
}
return 0;
}
```
这个程序会先计算并存储1到`n`的阶乘值,然后在循环中直接累加到总和上。注意,这里使用`unsigned long long`是因为阶乘的增长速度很快,可能会超过`long long`类型的范围。
阅读全文
相关推荐


















