我的代码没有显示使用 for 循环生成数字阶乘的确切输出。它将所有数字的所有值显示为 0。
public class Factorial {
public static void main(String[] args) {
int NUM_FACTS = 100;
for(int i=1;i<=NUM_FACTS;i++) {
System.out.println("Factorial of "+i+" is "+ `enter code here`factorial(i));
}
}
//getting factorial of a particular number
public static int factorial(int n) {
int result = 1;
for(int i=2; i<n; i++)
result *= i;
return result;
}
}
最佳答案
您的代码至少可以运行到一定数量的i
。在这里您可以看到其输出的一部分。
Factorial of 1 is 1
Factorial of 2 is 1
Factorial of 3 is 2
Factorial of 4 is 6
...
Factorial of 15 is 1278945280
Factorial of 16 is 2004310016
Factorial of 17 is 2004189184
Factorial of 18 is -288522240
Factorial of 19 is -898433024
Factorial of 20 is 109641728
从输出中可以看出,符号从正变为负。这是因为 int
的范围有限 - 您会看到溢出。更改为 long
不会有帮助,因为它的范围也不够。考虑使用 BigInteger。
关于使用 for 循环的 Java 阶乘代码未显示准确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54160317/