我正在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)
20!是2,432,902,008,176,640,000(~2*10 ^ 18),远大于可以存储的最大可能数量,int约为20亿.此代码将溢出并显示错误的答案.
要做出的修正是改变的声明factorial,从int到long.
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |