public static void main (String args[]){
int num=5;
int i=num-1;
int factorial=0;
while(i>0){
factorial=num*i;
i--;
}
System.out.println(""+factorial);
}
它一直让我回头5.对不起,如果这听起来像个孩子般的问题,我是编程世界的新手。
答案 0 :(得分:3)
<强>替换强>
factorial=num*i;
<强>与强>
num=num*i;
和强>
System.out.println(""+factorial);
<强>与强>
System.out.println(""+num);
<强>原因强>
您正在正确运行while
循环。在每次迭代中,您将两个连续的数字相乘。但是您将结果存储在factorial
中,每次迭代都会覆盖该结果。所以最后,你最终得到原始号码。所以按照上面的指示去除factorial
varialble。
答案 1 :(得分:2)
我不会给你解决方案,但它存储5是正常的,因为你的上一次执行是:
factorial = 5 * 1;
现在请三思而后行。
答案 2 :(得分:1)
你做错了什么因为它会以
的形式执行 num is 5 and i is 4 // result will be 20
then num is 5 and i is 3 // result will be 15
then num is 5 and i is 2 // result will be 10
then num is 5 and i is 1 // result will be 5
while loop break
您需要存储以前的结果,请使用此
int num=5;
int factorial=1;
while(num>0){
factorial=num*factorial; // previous result will be store in factorial
num--;
}
System.out.println(""+factorial);
现在该程序如何运作
num is 5 and fact is 1 // fact will be 5
then num is 4 and fact is 5 // fact will be 20
then num is 3 and fact is 20 // fact will be 60
then num is 2 and fact is 60 // fact will be 120
then num is 1 and fact is 120 // fact will be 120
while loop break
答案 3 :(得分:0)
在每个循环中,您将数字乘以i
,因此最后您将获得num*1
。您可以使用值factorial
初始化结果变量num
,并在每个循环中为其分配值乘以i
,这将导致所有数字从1乘以{{ 1}}(阶乘):
num