Получение 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;
}

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

Другие вопросы по тегам