用c++写一个1!+3!+5!+.....+n!的和
时间: 2024-11-04 07:14:54 浏览: 9
计算 S=1!+2!+3!+...+N!。
在 C++ 中,阶乘函数 (!) 可能会很快变得非常大,尤其是在计算较大数的阶乘时,可能导致整数溢出。为了避免这个问题,我们可以使用递归或循环同时结合取模运算来限制结果的范围。下面是一个使用循环来计算从 1 到 n 的所有奇数阶乘之和的示例:
```cpp
#include <iostream>
using namespace std;
// 较小值时直接返回阶乘的结果,避免大数溢出
long long factorial(int n) {
if (n <= 1)
return 1;
else
return n * factorial(n - 1);
}
long long sum_of_odd_factorials(int n) {
long long result = 0;
for (int i = 1; i <= n; ++i) { // 只考虑奇数
if (i % 2 == 1) {
result += factorial(i); // 累加奇数阶乘
}
}
return result;
}
int main() {
int n;
cout << "Enter a number: ";
cin >> n;
cout << "Sum of odd factorials from 1 to " << n << " is: " << sum_of_odd_factorials(n) << endl;
return 0;
}
```
阅读全文