Получение Java-факториальной программы с циклом while, который будет повторяться, если пользователь вводит "y", а факториальная часть также работает
Я новичок в программировании, и я пытаюсь выяснить, как заставить 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 ответ
Хорошо, во-первых, вам нужно знать, что такое факториал.
п! = n * (n-1)!
Это важно понимать. Факториал, если 5 в 5 раз больше факториала 4. Это на самом деле круто и очень полезно. Таким образом, вы можете написать функцию, которая делает это.
long factorial(long n) {
if (n == 1) {
return 1;
}
return n * factorial(n-1);
}
Итак, что вы делаете, это определяете метод, аналогичный описанному выше. И затем в вашем цикле, где вы просите их ввести номер, вы вызываете этот метод. Он вызывает себя по мере необходимости, чтобы сделать расчет за вас.
Есть и другие способы. Вы можете сделать цикл.
long result = 0;
for (long val = 2; val <= n; ++val) {
result = result * val;
}
Но рекурсивный метод - это круто.