2015-10-14 60 views
-4

我想寫一個簡單的程序來獲取ln(2)的諧波系列的總和,即(-1)^(k+1)/kC++添加一個系列的總和

問題是我一直在一起添加系列答案。

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重新運行時間重新添加本身,但我還沒有太大的幫助。如果任何人都可以指出我的寫作方向,那會很棒。先謝謝你。

回答

3
  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; 
} 
+0

這很有道理。我知道我不能在循環中使用初始化的變量,但在循環之外進行初始化並重新使用,直到我的頭上。非常感謝你 – Kai1015