Java, вложенный в циклы и факториалы новичка - PullRequest
0 голосов
/ 06 сентября 2018

Я работаю над гнездом while. Я начал с начального цикла while, который распечатывал факториал заданного числа. Код для этого ниже. Я сейчас пытаюсь добавить второй цикл, который будет 10 цифр (то есть, если было введено число 4, это напечатало бы факториал для чисел от 4 до 14). Я знаю, что цикл должен начинаться выше того, что у меня уже есть, но я не знаю, куда идти дальше. Я вставил то, что я считаю началом первого цикла. Я новичок в кодировании, поэтому любая помощь приветствуется

Существующий код:

import java.util.Scanner;

public class MyClass 
{
    public static void main(String args[]) 
    {
        Scanner myScanner = new Scanner(System.in)

        while (count <10)
        {
            int number = myScanner.nextInt();
            int fact = 1;
            int i = 1;

            while(i<=number)
            {
                fact = fact * i;
                i++;
            }
            System.out.println("Factorial of "+number+" is: "+fact);
        }
   `}
}

1 Ответ

0 голосов
/ 06 сентября 2018

- Вам нужно переместить number = myScanner.nextInt() за пределы цикла, чтобы он не запрашивал новый ввод при каждой итерации.

-Вы должны определить count (int count = 0;)

- цикл до count <= 10.

-Инкремент count и number в конце цикла:

Scanner myScanner = new Scanner(System.in);
int count = 0;
int number = myScanner.nextInt();
while (count <=10) {

     int fact = 1;
     int i = 1;

     while(i<=number) {         
         fact = fact * i;
         i++;
     }
     System.out.println("Factorial of "+number+" is: "+fact);
     number++;
     count++;
}

Выход: (с входом 4)

Factorial of 4 is: 24
Factorial of 5 is: 120
Factorial of 6 is: 720
Factorial of 7 is: 5040
Factorial of 8 is: 40320
Factorial of 9 is: 362880
Factorial of 10 is: 3628800
Factorial of 11 is: 39916800
Factorial of 12 is: 479001600
Factorial of 13 is: 1932053504
Factorial of 14 is: 1278945280

Однако мы можем оптимизировать это много. 5! равно 4! * 5. Итак, зная это, мы просто не можем сбросить i и fact внутри цикла. Если мы введем 4, после первой итерации fact будет равно 4 !, а i будет равно 5. Если просто не сбрасывать их, на следующей итерации мы просто умножим fact ( 4!) На 5. Тогда i станет шестым, и цикл while прекратится. Затем это будет продолжаться до тех пор, пока не завершится внешний цикл while.

int fact = 1;
int i = 1;
while (count <=10) {       
     while(i<=number) {            
         fact = fact * i;
         i++;
     }
     System.out.println("Factorial of "+number+" is: "+fact);
     number++;
     count++;
}

При вводе 4 это уменьшит количество итераций во внутреннем цикле while с 99 до 14.

...