- Вам нужно переместить 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.