我正在尝试编写一个简单的程序来获取p
的谐波系列的总和,即ln(2)
。
问题是我一直坚持将系列的答案加在一起。
(-1)^(k+1)/k
我尝试过像int main() {
double n(0);
while (n < 1) {
cout << "Enter n: ";
cin >> n;
}
for (int i = 1; i <= n; i++) {
double num1 = (pow(-1.0, i + 1.0)) / (i);
cout << num1;
}
return 0;
}
这样的事情,期望循环只会在每次重复运行时重新添加,直到double answer = num1 + num1;
等于i
,但我还没有很有帮助。如果有人能指出我的写作方向会很棒。提前谢谢。
答案 0 :(得分:3)
double sum = 0.0;
for (int i = 1; i <= n; i++) {
double num1 = (pow(-1.0, i + 1.0)) / (i);
sum += num1;
}
cout << sum << endl;
建议改进
您无需为每个字词计算pow(-1.0, i+1.0)
。您可以保持正常运行sign
。
int sign = -1;
for (int i = 1; i <= n; i++, sign = -sign) {
double num1 = sign*1.0 / (i);
sum += num1;
}