一、题目链接
http://noi.openjudge.cn/ch0105/35/
二、解题思路
◎ 将每一项循环累加到和上,同时计算下一项。
三、实施步骤
◎ 首先,定义并输入int类型的整数n;
◎ 其次,定义两个double类型的整数e、f,初始时e、f均为2;
◎ 然后,从1/2!累加到1/n!,循环处理如下:
→ 令e=e+1/f,f=f*(i+1);
◎ 最后,保留10位小数输出e。
四、C++程序
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
double e = 2; // e的值,初始时为2,也即前两项之和
double f = 2; // 每一项的分母,初始时为2,也即第三项的分母
/* 从1/2!累加到1/n! */
for (int i = 2; i <= n; i++)
{
e = e + 1 / f; // 将当前项累加到e上
f = f * (i + 1); // 计算下一项的分母
}
printf("%.10f", e); // 保留10位小数输出结果
return 0;
}