首页 > 解决方案 > 程序的 Java 阶乘计算不能做 0,1,2 我该如何解决这个问题

问题描述

// Factorial Calculation
                double factorial = 1;
                factorial = firstNumber;
                for(double i = factorial-1; i > 1; i--){
                       factorial = factorial * i;
                       // Makes result equal to the firstNumber
                       result = factorial;
                     // To continue the program
                     continue;

                 }
                // Displays the result for factorial
                System.out.println("factorial of " + firstNumber + " is " + form.format(result));
                // To continue the program
                    continue;

所以我必须通过使用 switch 语句来计算计算器,除了当我进行阶乘计算时,如果我输入 0,1 或 2,答案总是 0,但从 3 到 10,答案总是正确的。所以 firstNumber 是用户输入的变量。阶乘是它将计算的数字,我必须这样做,所以当我显示我的消息时,firstNumber 等于数字而不是结果。

标签: javafactorial

解决方案


result可能已初始化为0(例如int result = 0;)。

发生的情况是,当您输入一个小于 的数字时3,这意味着factorial-1小于2,并且由于我们正在处理整数,这意味着不大于1。循环的条件是i必须大于1所以你永远不会进入循环,也result永远不会改变它的初始值。快速解决方法可能是简单地更改i > 1i > 0; 无论如何乘以没有坏处1

您还应该初始化result1,因为您不会为值0和输入循环1,但这很好,因为它们的阶乘都是1


推荐阅读