C ++添加一系列的总和

时间:2015-10-14 14:27:17

标签: c++ loops for-loop sum

我正在尝试编写一个简单的程序来获取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,但我还没有很有帮助。如果有人能指出我的写作方向会很棒。提前谢谢。

1 个答案:

答案 0 :(得分:3)

  1. 创建一个保持运行总和的变量。
  2. 将其初始化为零。
  3. 继续将系列中的每个术语添加到总和中。
  4. 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;
    }