一个数字的因子显示问题

时间:2017-10-11 22:20:23

标签: java

我知道如何编码来查找数字的阶乘:

   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

3 个答案:

答案 0 :(得分:0)

使用递归。要为n = 1显示的值为“1 =”。对于任何其他n,它是“n *”+显示(n-1)。

display(2)=&gt; “2 *”+显示(1)=&gt; “2 * 1 =”

display(3)=&gt; “3 *”+显示(2)=&gt; “3 * 2 * 1 =”

等等。

答案 1 :(得分:0)

有很多方法可以做到这一点。使用现有代码,您可以在现有循环中打印它。递归将是寻找阶乘的优雅方式。

public static int factorial(int n) {
    System.out.print("factorial is : ");
    int result = 1;
    for (int i = n; i >= 1; i--) {
        result = result * i;
        System.out.print(i!=1 ? (i+"*"): (i+"="));
    }
    System.out.println(result);
    return result;
}

PS:作为最佳实践,您需要在此处理所有方案。 (字符串/否定/ ..输入)

答案 2 :(得分: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是什么并不重要,您将获得返回显示的正确字符串。