使用递归函数求阶乘累加和(c++语言)
时间: 2024-12-03 08:05:13 浏览: 20
在C++中,我们可以使用递归函数来计算阶乘的累加和。阶乘是一个数的所有小于及等于它的正整数的积,通常表示为n!。而累加和则是从1到n的所有数的阶乘之和。
这是一个简单的示例,定义了一个名为`factorial_sum`的递归函数:
```cpp
#include <iostream>
// 递归函数计算阶乘
unsigned long long factorial(unsigned int n) {
if (n == 0 || n == 1)
return 1; // 阶乘的基本情况:0和1的阶乘都是1
else
return n * factorial(n - 1); // 递归调用,计算n * (n-1)!
}
// 递归函数计算阶乘累加和
unsigned long long factorial_sum(int n) {
unsigned long long sum = 0;
for (int i = 0; i <= n; ++i) {
sum += factorial(i);
}
return sum;
}
int main() {
int limit;
std::cout << "请输入一个正整数:";
std::cin >> limit;
try {
unsigned long long result = factorial_sum(limit);
std::cout << "从1到" << limit << "所有数的阶乘累加和是:" << result << std::endl;
} catch (...) {
std::cerr << "输入错误,阶乘可能会很大,请确保输入的是一个较小的正整数。" << std::endl;
}
return 0;
}
```
在这个例子中,`factorial_sum`函数会首先初始化一个`sum`变量为0,然后对每个数`i`从1到n计算它的阶乘并累加到`sum`上。需要注意的是,因为阶乘增长非常快,当n较大时可能会导致溢出,所以在实际应用中需要处理这种情况。
阅读全文