Факториальное использование до - пока л oop. Переменная num1 становится равной нулю, но условием while является num1> = 1. как это работает? - PullRequest
0 голосов
/ 12 февраля 2020
Scanner scan = new Scanner(System.in);

System.out.println("Enter a number ") ;

int num = scan.nextInt();

int num1 = num;
do {
      num1--;  
      num = num * num1; 
} while (num1 >= 1);

System.out.println(num);

Почему результат равен нулю, поскольку условие, если num1 больше или равно 1?

1 Ответ

2 голосов
/ 12 февраля 2020

Поскольку это l, 1003 *, и вы проверяете на num1> = 1, l oop exexutes значение num1 = 1, а num1-- приводит к num1 = 0, в результате чего весь факториал будет равен нулю:

Scanner scan = new Scanner(System.in);
System.out.println("Enter a number ") ;

int num=scan.nextInt();
int num1 = num ;
  do{
     num1--;

  num= num * num1; 



}while(num1>=2);   // changed to 2
 System.out.println(num);
 }
...