【问题标题】:C++ Adding sum of a seriesC ++添加一个系列的总和
【发布时间】:2015-10-14 14:27:17
【问题描述】:

我正在尝试编写一个简单的程序来获取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 等于n,但我没有得到太多帮助。如果有人能指出我的写作方向,那就太好了。提前谢谢你。

【问题讨论】:

    标签: c++ loops for-loop sum


    【解决方案1】:
    1. 创建一个保持运行总和的变量。
    2. 将其初始化为零。
    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;
    }
    

    【讨论】:

    • 这很有意义。我知道我不能在循环内使用初始化变量,但是在循环外初始化和重用就在我头上。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 2013-03-04
    • 1970-01-01
    相关资源
    最近更新 更多