如何用C++编写计算1到n各各数字的阶乘之和
时间: 2024-10-22 17:29:35 浏览: 29
在C++中,你可以通过递归或循环的方式来计算从1到n的数字的阶乘之和。这里提供一个简单的循环实现方法,因为递归虽然直观但可能导致栈溢出对于大的n值:
```cpp
#include <iostream>
using namespace std;
// 计算阶乘函数
unsigned long long factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}
// 阶乘之和的累加函数
unsigned long long sumOfFactorials(int n) {
unsigned long long sum = 0;
for (int i = 1; i <= n; ++i) {
sum += factorial(i);
}
return sum;
}
int main() {
int n;
cout << "请输入一个整数n: ";
cin >> n;
if (n >= 0) { // 检查输入是否合法
unsigned long long result = sumOfFactorials(n);
cout << "从1到" << n << "的阶乘之和是: " << result << endl;
} else {
cout << "错误!输入的数值必须是非负整数。" << endl;
}
return 0;
}
```
在这个程序中,`factorial`函数用于计算阶乘,而`sumOfFactorials`函数则遍历1到n,累积每个数的阶乘,并返回总和。
阅读全文