研究性学习A初选题
求 1+1/2!+1/3!+…+1/n! 的累加和
这个题,大多数人反应都是用双重循环,以前老师上课也是这样说的,但是今天我却偶遇了一个更简便的方法。
常见的方法如下:
for(int i = 1; i <= n; i++)
{
k = 1;
for(int j = 1; j <= i; j++)
{
k *= j;
}
sum += 1.0 / k;
}
巧妙算法如下:
for(int i = 1; i <= n; i++)
{
k *= i;
sum += 1.0 / k;
}
完整代码如下:
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
double sum = 0.0,k = 1;
for(int i = 1; i <= n; i++)
{
k *= i;
sum += 1.0 / k;
}
cout << sum;
return 0;
}