Java factorial format

2019-10-03 06:13发布

问题:

My factorial method is working correctly although I would like to change the output from just outputting the number and the factorial result. For example I would like if the user enters 6 for the output to say 6 * 5 * 4 * 3 * 2 * 1 = 720, instead of factorial of 6 is: 720.

int count, number;//declared count as loop and number as user input
    int fact = 1;//declared as 1
    Scanner reader = new Scanner(System.in);  // Reading from System.in
    System.out.println("Please enter a number above 0:");
    number = reader.nextInt(); // Scans the next token of the input as an int
    System.out.println(number);//prints number the user input
    if (number > 0) {
        for (i = 1; i <= number; i++) {//loop 
            fact = fact * i;
        }
        System.out.println("Factorial of " + number + " is: " + fact);
    }
    else 
    {
        System.out.println("Enter a number greater than 0");
    }
}

回答1:

create a string and store the numbers.

try something like this.

    int count, number;//declared count as loop and number as user input
    String s; //create a string
    Scanner reader = new Scanner(System.in);  // Reading from System.in
    System.out.println("Please enter a number above 0:");
    number = reader.nextInt(); // Scans the next token of the input as an int
    int fact = number;//store the number retrieved
    System.out.println(number);//prints number the user input
    if (number > 0) {
        s=String.valueOf(number);
        for (int i = 1; i < number; i++) {//loop 
            fact = fact * i;
            s = s +" * "+String.valueOf(number-i);
        }
        System.out.println(s+ " = " + fact);
    }
    else 
    {
        System.out.println("Enter a number greater than 0");
    }


回答2:

Check out this recursive approach: (check negative numbers yourself :D)

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int num = scanner.nextInt();
    System.out.println(getFactorialString(num, " = " + getFactorial(num)));
}

public static String getFactorialString(int num, String result) {
    if (num == 0) return "0 => 1";
    if (num == 1) {
        result = "" + num + "" + result;
    } else {
        result = getFactorialString(num - 1, result);
        result = "" + num + " x " + result;
    }
    return result;
}

public static int getFactorial(int num) {
    if (num == 0) return 1;
    return num * getFactorial(num - 1);
}