2017-10-11 124 views
-1

我知道如何代碼中查找一個數的階乘:階乘問題

public static void factorialcalculations() 
      { 
    int usernumber, calculation, fact = 1; 

    System.out.println("Enter an integer to calculate it's factorial"); 
    Scanner in = new Scanner(System.in); 

    usernumber = in.nextInt(); 

    if (usernumber < 0) 
    System.out.println("Number should be non-negative."); 
    else 
    { 
    for (calculation = 1 ; calculation <= usernumber ; calculation++) 
     fact = fact*calculation; 

    System.out.println("Factorial of "+usernumber+" is = "+fact); 
    { 

但我需要的是一個是要顯示的號碼是乘以例如,如果它是5

我需要它來顯示階乘是:5*4*3*2*1=120

+1

那麼你的問題是什麼?這不是一個代碼生成站點。如果你有特定的問題,人們可以幫助你,但沒有人會簡單地寫你的代碼。 –

+0

我不是要求它被寫入,我只是不能解決如何使用該代碼來提供階乘輸出。 我管理它,所以它說5的階乘= 120,但不顯示爲5 * 4 * 3 * 2 * 1 – Ross

+0

歡迎來到堆棧溢出。請回顧[我如何問一個好問題](https://stackoverflow.com/help/how-to-ask)。你已經試圖找到問題了?問題應該顯示**研究證據,並嘗試自己解決問題**,清楚地列出您的特定編碼相關問題以及[最小,完整和可驗證示例]中的相關代碼(https:// stackoverflow .com/help/mcve),所以我們有足夠的信息能夠提供幫助。 – FluffyKitten

回答

0

使用遞歸。您想要爲n = 1顯示的值是「1 =」。對於任何其他n,它是「n *」+顯示(n-1)。

顯示器(2)=> 「2 *」 +顯示屏(1)=> 「2 * 1 =」

顯示器(3)=> 「3 *」 +顯示器(2)=>「3 * 2 * 1 =「

等等。

+0

是否有一個更簡單的方法來做到這一點,因爲你可能不知道用戶選擇什麼作爲號碼 – Ross

0

有很多方法可以做到這一點。使用您現有的代碼,您可以在現有的循環內打印它。遞歸將是找到階乘的優雅方法。 PS:作爲一個最佳實踐,您需要處理這裏的所有場景。 (串/負/ ..輸入)

+0

增加了新的代碼,你可以幫助那一個 – Ross

+0

我會補充說,它不能是一個負數 – Ross

0

這裏是你彷彿在尋找人:

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    System.out.print("Enter the number whose factorial is to be found: "); 
    int n = scanner.nextInt(); 
    int result = factorial(n); 
    System.out.println(getFactString(n,result)); 
} 

public static int factorial(int n) { 
    int result = 1; 
    for (int i = 1; i <= n; i++) { 
     result = result * i; 
    } 
    return result; 
} 

public static String getFactString(int n, int result){ 
    String output= ""; 
    int count = n; 

    for (int i = count; i > 0; i--) { 
     if (n==1) { 
      output = output + n +" = "; 
      break; 
     } 
     output = output + n+" * "; 
     n--; 
    } 
    return output + result; 

} 

它也可以不這樣做將StringBuilder的爲好。使用getFactorString()方法,n是什麼都沒關係,你會得到正確的字符串返回顯示。