Java 使用do-while循环的阶乘。num1变量变为零,但while的条件为num1>=1.这是怎么回事?
为什么结果为零,因为条件是num1是否大于或等于1?因为这是一个do while循环,并且您正在检查num1>=1,循环EXEXEXUTES值num1=1, 和num1——num1=0的结果,因此整个阶乘为零:Java 使用do-while循环的阶乘。num1变量变为零,但while的条件为num1>=1.这是怎么回事?,java,do-while,factorial,Java,Do While,Factorial,为什么结果为零,因为条件是num1是否大于或等于1?因为这是一个do while循环,并且您正在检查num1>=1,循环EXEXEXUTES值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--;
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);
由于这是一个do while循环,并且您正在检查num1>=1,因此循环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 >= 1);
System.out.println(num);
当
num1
不再>=1时,循环退出,当它等于0时会发生这种情况。您使用的是do-while
循环。循环不变量必须是false
,循环才能结束,并且在循环体中,每次迭代时从num1
(顺便说一句,变量名很糟糕)中减去一个。因此,经过精确的num
(只是糟糕的变量名)迭代之后,num1
必须是0
@ElliottFrisch谢谢。顺便说一句,我只是在练习如何编码,这就是为什么我想出了那些蹩脚的变量名。没关系,有一些短变量名,比如a
,b
,I
,j
,你知道你的立场。但是用num
和num1
你永远也说不清。“我讨厌这些肮脏的中立分子,基夫。对于敌人,你知道他们站在哪里,但是对于中立分子,谁知道呢?这让我恶心。”——Zap Branniganth循环在num1
不再>=1时退出,当它等于0时就会发生。你使用的是do-while
循环。循环不变量必须是false
,循环才能结束,并且在循环体中,每次迭代时从num1
(顺便说一句,变量名很糟糕)中减去一个。因此,经过精确的num
(只是糟糕的变量名)迭代之后,num1
必须是0
@ElliottFrisch谢谢。顺便说一句,我只是在练习如何编码,这就是为什么我想出了那些蹩脚的变量名。没关系,有一些短变量名,比如a
,b
,I
,j
,你知道你的立场。但是用num
和num1
你永远也说不清。“我讨厌这些肮脏的中立分子,基夫。你知道敌人的立场,但是中立分子,谁知道呢?这让我恶心。”——扎普·布兰尼根