自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。 输入格式: 输入第一行中给出非负整数 n(≤1000)。 输出格式: 在一行中输出部分和的值,保留小数点后八位。用C++编写程序
时间: 2024-11-12 17:40:20 浏览: 93
自然常数 \(e\) 的泰勒级数是一个著名的无穷级数,其通项公式为 \(\frac{1}{n!}\),其中 \(n!\) 表示 \(n\) 的阶乘。要求出前 \(n+1\) 项和,你可以创建一个循环,从 \(1\) 到 \(n\),依次累加每一项的倒数除以对应的阶乘。以下是使用 C++ 编写的简单程序来实现这个任务:
```cpp
#include <iostream>
#include <cmath>
double factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}
double series_sum(int n) {
double sum = 1; // 初始化为1(对应1/1!)
for (int i = 1; i <= n; ++i) {
sum += pow(1.0, i) / factorial(i); // 计算并添加当前项
}
return sum;
}
int main() {
int n;
std::cin >> n;
// 将结果四舍五入到小数点后八位
double result = series_sum(n);
std::cout << std::setprecision(8) << fixed << result << std::endl;
return 0;
}
```
在这个程序中,`factorial()` 函数用于计算阶乘,`series_sum()` 函数则遍历并累计级数的项。注意,为了得到准确的小数点后八位,我们使用了 `std::setprecision(8)` 和 `fixed` 标志来控制浮点数的输出精度。
阅读全文