这个阶乘计划我做错了什么?它只是继续返回原始值

时间:2017-09-23 21:08:42

标签: java loops for-loop iteration

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.对不起,如果这听起来像个孩子般的问题,我是编程世界的新手。

4 个答案:

答案 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