不要定义fraction就直接好好算怎么写
时间: 2024-10-19 14:11:27 浏览: 5
如果你想直接在循环里计算而不定义单独的`fraction`变量,可以简单地在每次迭代时更新`sum`,如下所示:
```cpp
#include <iostream>
using namespace std;
double calculate_sum(int n) {
double sum = 0.0;
for (int i = 1; i <= n; ++i) {
sum += 1.0 / static_cast<double>(factorial(i)); // 直接在sum上累加
}
return sum;
}
unsigned long long factorial(unsigned int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1); // 递归实现阶乘
}
}
int main() {
int num;
cout << "请输入一个正整数 (5 到 1000 之间): ";
cin >> num;
// 检查输入是否在范围内
if (num < 5 || num > 1000) {
cout << "错误:输入超出范围,需要在5到1000之间。\n";
return 0;
}
double result = calculate_sum(num);
cout << "1! 分之一到 " << num << "! 分之一的和为: " << result << endl;
return 0;
}
```
在这个版本中,我们将计算阶乘分数的部分直接写在了`calculate_sum`函数的循环内,简化了代码。同时,我提供了一个递归版本的`factorial`函数,以便避免栈溢出的问题。
阅读全文