注意事项
本题中若直接计算n的阶乘,会超出长整型的表示范围,因此需要存储好前一步的计算结果。且找出规律,后一项等于前一项乘以n/(2*n+1)
题解
#include<iostream>
using namespace std;
int main()
{
float f, sum = 1;//f为输入的阈值,sum记录前n项的和
int n = 1;
float predata = 1.0, data = 1.0;//记录前一项的值
cin >> f;
while (1)
{
data = predata * 1.0 * n / (2 * n + 1);
predata = data;
sum += data;
n++;
if (data < f)
break;
}
printf("%.6f\n",2* sum);
return 0;
}