可能重复:
计算任意大数的阶乘,显示所有数字
这个问题可能会在这里被问一千次。我正在通过修改重复我的问题。我想计算一个大数的阶乘(max range of the number=10^6
)。通常我们使用一个for
循环 from i=1
toi=number
并且每次将旧值乘以新值。这对小数字很好,但如果我有大数字怎么办?for
现在增加了循环的范围。Java 原始数据类型int
,long
无法处理生成的大量数据。他们只是溢出。虽然我知道BigInteger
类,它可以处理这么大的输出,但for
循环仍然不适合我。有人可以建议我打勾,任何计算数字阶乘的技巧吗?以下是适用于小数字的简单程序-
public long getFactorial(long number) {
long factorial = 1;
for (long i = 1; i <= number; ++i) {
factorial *= i;
}
return factorial;
}