我试着这样做:
(n输入数1 <= n <= 100,首先x = 0.1)
我必须打印一个包含总和和X-es计数的表 我尝试用递归来解决这个问题,但这需要很长时间:(
我只想知道算法。
我的尝试:
#include <iostream>
using namespace std;
int main()
{
int N;
cin >> N;
double x = 0.1, mx2 = -x*x*2;
int i;
double part = 1, sum = 1;
for (i = 2; i < N; i+=2) {
part *= mx2/((i-1)*i);
sum += part;
cout<<"sum= "<<sum<<endl;
}
return 0;
}
是吗?
答案 0 :(得分:2)
要计算x^2n
,请注意,在上一步中您需要x^2(n-1)
,因此只需要将其与x^2
相乘。
另外,对于计算(2n)!
,您在上一步中已(2(n-1))!
,因此只需要将其乘以(2n-1)*2n
。
实际上只有一个额外的变量可以帮助你,它拥有x ^ 2n /(2n)的值!在每一步中,只需将其乘以下一步的适当值。
修改强> 您当前的代码问题在这一行:
cout<<"sum= "<<sum<<endl;
因为cout是非常耗时的工作,并且在for循环的每次迭代中你都想要这样做。 而不是那样,如果需要有这样的cout,创建char流并将总和的值插入到此中,最后只需一个cout显示所有结果。