2015-12-05 82 views
2

我試圖寫一個Java程序來獲得這個系列的輸出:輸出一系列

series

所以我這樣做:

import java.util.Scanner; 

public class ICSE2007_Pg111 { 

    public static void main() { 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Enter th elimit"); 
     int n = sc.nextInt(); 

     double add = 0; 
     double mult = 1; 
     double divide = 0; 
     double total = 0; 
     for (int i = 2; i <= n; i++) { 
      for (int x = 1 ; x <= i; x++) { 
       add += x; 
       mult *= x; 
      } 

      divide = add/mult; 
      total += divide; 
     } 
     System.out.println("The resultant sum = " + total); 
    } 
} 

我覺得這個代碼是正確。但是,對於n = 3的值,正確的輸出應該是2.916666666666666666,但我得到2.25。如果有人可以請指出錯誤。

+0

爲此在優化的方式,您將得到2.916666666666666666對於n = 4(三級迭代)和n = 3時,你會得到2.5 –

+0

就意識到,遺憾的錯誤信息。 – SamHat

回答

2

你忘了內循環之前重置addmult

for(i = 2;i<=n;i++) { 
     add = 0; 
     mult = 1; 
     for(x =1 ;x<=i;x++) 
     { 
      add +=x; 
      mult *= x; 

     } 
     ... 

附:根據您的圖片,爲n=3你應該得到2.5

+0

噢謝謝你是一切正確? – SamHat

+0

@SamHat對我來說看起來還行 – Eran

+0

它工作謝謝 – SamHat

0

您可以在一個循環

float sum = 1; 
float mul = 1; 
float res = 0; 
for(int i = 2;i<=n;i++) { 
    sum = sum+i; 
    mul = mul*i; 
    res = res+(sum/mul); 
} 
+0

當n = 4時會給出錯誤的輸出,當它應該給出2.9時給出2.2083333 – SamHat