Получение Java-факториальной программы с циклом while, который будет повторяться, если пользователь вводит «y», а факториальная часть также работает - PullRequest
0 голосов
/ 14 февраля 2019

Я новичок в программировании и пытаюсь выяснить, как заставить Java-программу правильно запускать факториал и спрашивать пользователя, хочет ли он продолжить, и вводить другое число, чтобы использовать и отображать факториал для этого.Когда пользователь вводит «y», программа должна запросить другой номер.Если они выбирают «n», программа должна завершиться.Я работал над этим кодом в течение дня и до сих пор не понял, где я ошибаюсь в коде, чтобы заставить его правильно решать факториалы во время цикла.Может кто-нибудь помочь мне?

	int i = 0;
	int factorial = 1;
	int input;
	char ind = 'y';

	     
 while (ind == 'y') {
     	System.out.println("Please enter in a number to determine it's factorial: ");
 	input = scan.nextInt();
 		scan.nextLine();
if  ( i<= input) {
	i=input;
			i++;
	 factorial = factorial * i;
	 System.out.println(" the factorial of: " + input + " is " + factorial);
}System.out.println(" Do you want to continue? (y/n) :");
	ind = scan.nextLine().charAt(0);	
}
System.out.println("goodbye.");
	} }

1 Ответ

0 голосов
/ 14 февраля 2019

Хорошо, во-первых, вам нужно знать, что такое факториал.

n!= n * (n-1)!

Это важно понимать.Факториал, если 5 в 5 раз больше факториала 4. Это на самом деле круто и очень полезно.Таким образом, вы можете написать функцию, которая делает это.

long factorial(long n) {
    if (n == 1) {
        return 1;
    }
    return n * factorial(n-1);
}

Итак, вы определяете метод, аналогичный описанному выше.И затем в вашем цикле, где вы просите их ввести номер, вы вызываете этот метод.Он вызывает себя по мере необходимости, чтобы сделать расчет за вас.

Есть и другие способы.Вы можете сделать цикл for.

long result = 0;
for (long val = 2; val <= n; ++val) {
    result = result * val;
}

Но рекурсивный метод довольно крутой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...