2012-01-05 8 views
3

割り当て:次のシリーズを計算する方法を書いてください。 m(i)= 1 - (1/2)+(1/3) - (1/4)+(1/5) - ... +((-1)^(I + 1))/ Iシリーズを計算する

次のコードを表示するテストプログラム作成:

i:  m(i): 
5  0,78333 
10  0,64563 
..  .. 
45  0,70413 
50  0,68324 

を私は今、時間のカップルのために試した、と私はちょうどこれを解決する方法を考えることができません。たぶん私はここ

は、これまでの私のコードであるだけで愚かな笑:)です:UPDATED

package computingaseries; 

public class ComputingASeries { 

    public static void main(String[] args) { 

     System.out.println("i\t\tm(i)"); 
     for (int i = 5; i <= 50; i += 5) { 
      System.out.println(i + "\t\t" + m(i)); 
     } 
    } 

public static double m(int n) { 
     double tal = 0; 
     double x = 0; 

     for (int i = 1; i <= n; i += 1) { 
      if (i == 1) { 
       x = 1 - ((Math.pow(-1, (i + 1)))/i); 
      } else { 
       x = ((Math.pow(-1, (i + 1)))/i); 
      } 
     } 
     tal += x; 

     return tal; 

    } 
} 

私の間違った出力:あなたが持っている

i  m(i) 
5  0.2 
10  -0.1 
15  0.06666666666666667 
20  -0.05 
25  0.04 
30  -0.03333333333333333 
35  0.02857142857142857 
40  -0.025 
45  0.022222222222222223 
50  -0.02 
+4

ヒントにここでそれを実行することができ、^はべき乗ではありません。 –

+1

また、整数除算と浮動小数点除算の違いは基本的なものです。 –

+0

Math.powは今働いています、ありがとう:)しかし、間違った出力を得ています:/ – Daniel

答えて

2

x =((-1)^(i + 1))/ i

を定義するときに、 "1"

EDIT

X == 1ための特別なケースはありませんが、Xが常にX = Math.pow(-1、は、I + 1)/ Iのように定義されます。 また、tal + = xもfor-loopに入ります。これは、(+ 1)^(1 + 1)/ 1 =((-1)^ 2)/ 1 = 1/1 =あなたが思うように

+1

そしてダンWが答えたことは正しいです、あなたは正しい演算子を電源に使用する必要があります – Fortunato

+0

だから私は "それは今、大丈夫ですか? – Daniel

+0

Math.powは動作していますが、出力が完全に乱れています。問題を見つけることができますか?更新されたコード@トップ:) – Daniel

0
public class SpecialSeries { 

    public static double m(int n){ 
     double sum = 0; 
     for (int i = 1; i <= n; i++) { 
      sum += Math.pow(-1, (i+1))/(double)i; 
     } 
     System.out.println(n+"\t"+sum); 
     return sum; 
    } 

    public static void main(String[] args) { 
     System.out.println("i:\tm(i)"); 
     for (int i = 5; i < 50; i+=5) { 
      m(i); 
     } 
    } 
} 

あなたはideone

関連する問題