查找直到 x 项的序列总和时出现意外错误
Unexpected error in finding a sum of series till x terms
这是我要求和的系列(最多用户输入的 x 项):
1/1 + 1/3 + 1/5 + 1/7 + ...
这是我写的代码:
int x;
cout << "How many terms (x) you want to add the series till?\n\n ";
cin >> x;
float m, answer=0.0;
for (int n=0; n<x; n++)
{
m=1/((2*n)+1);
answer=answer+m;
}
cout << " \n The answer is " << answer;
但是,答案总是 1 那么我这里可能做错了什么?
行
m=1/((2*n)+1);
右边是做整数运算,因为涉及到的都是整数。对于 n=0,你得到 1/((2*0)+1) = 1/1 = 1
,而对于例如n=1 你得到 1/((2*1)+1) = 1/3 = 0
,然后分配给浮点数。最后,第一项为 1,其余项为零,因此总和最终为 1。
如果你使任何项浮点,像这样:
m = 1.0 / (2 * n + 1);
然后你会得到类似 1.0 / 3 = 0.333...
的结果。
您可以在此处查看有关算术运算符规则的更多详细信息:
这是我要求和的系列(最多用户输入的 x 项):
1/1 + 1/3 + 1/5 + 1/7 + ...
这是我写的代码:
int x;
cout << "How many terms (x) you want to add the series till?\n\n ";
cin >> x;
float m, answer=0.0;
for (int n=0; n<x; n++)
{
m=1/((2*n)+1);
answer=answer+m;
}
cout << " \n The answer is " << answer;
但是,答案总是 1 那么我这里可能做错了什么?
行
m=1/((2*n)+1);
右边是做整数运算,因为涉及到的都是整数。对于 n=0,你得到 1/((2*0)+1) = 1/1 = 1
,而对于例如n=1 你得到 1/((2*1)+1) = 1/3 = 0
,然后分配给浮点数。最后,第一项为 1,其余项为零,因此总和最终为 1。
如果你使任何项浮点,像这样:
m = 1.0 / (2 * n + 1);
然后你会得到类似 1.0 / 3 = 0.333...
的结果。
您可以在此处查看有关算术运算符规则的更多详细信息: