因子计算

use*_*537 -3 java

我正在Saylor学院的网页上通过计算机科学学习java编程.我到了学习NetBeans中调试程序的地方,并且有一个计算和打印阶乘的程序n (=1*2*3*...*n).该文中说程序中存在逻辑错误,但没有关于它的位置.我似乎无法弄清楚逻辑错误在哪里.

有谁可以提供帮助?程序代码:

/** Compute the factorial of n */
public class Factorial {
   // Print factorial of n
   public static void main(String[] args) {
      int n = 20;
      int factorial = 1;

      // n! = 1*2*3...*n
      for (int i = 1; i <= n; i++) {
         factorial *= i;
      }
      System.out.println("The Factorial of " + n + " is " + factorial);
   }
}
Run Code Online (Sandbox Code Playgroud)

rge*_*man 6

20!是2,432,902,008,176,640,000(~2*10 ^ 18),远大于可以存储的最大可能数量,int约为20亿.此代码将溢出并显示错误的答案.

要做出的修正是改变的声明factorial,从intlong.