2013-11-03 29 views
1

所以我需要輸出一個階乘的總和,例如1!+2!...+n!=sum我發現了一種獲得單一因子的方法,但我不知道如何將它們相加在一起。這是我在這樣的嘗試:因子的總和

System.out.println("Ievadiet ciparu"); 
     Scanner in = new Scanner(System.in); 

     n = in.nextInt(); 
     if (n < 0) 
     System.out.println("Ciparam jabut pozitivam."); 
     else 
     { 
      while (x>2){ 
     for (c = 1 ; c <= n ; c++) 
      fact = fact*c; 
     sum=sum+fact; 
     n=n-1; 
     if (n==0) break; 

     } 
     System.out.println("Faktorialu summa "+sum); 

回答

5

不是有環1-n和計算每個別處階乘,我會因爲你計算的階乘累積總和- 即有兩個局部變量;一個因子,一個用於總和:

long factorial = 1, sum = 0; 
for (int i = 1; i <= n; i++) { 
    factorial *= i; 
    sum += factorial; 
} 

n = 5測試,sum153,這是正確的:是,金額爲循環1 + 2 + 6 + 24 + 120

你的問題 - 你只需要大括號在這裏。


此外,您while循環條件x < 2永遠不會改變,因此無論是循環將不會執行(如果x > 1)或循環永遠不會終止,因爲x不是在循環中改變。

+0

他已經有那個..... – Lan

+0

他*不*。請注意'sum = sum + fact'在階乘計算循環之外。 –

+0

@MarkoTopolnik哎呀,丟失的括號讓我想念那個。 – Lan