Java用 int 最大能存储哪个数据的阶乘?
public class A {
public static void main(String[] args) {
System.out.println("int最大值:"+Integer.MAX_VALUE);
Factorial(Integer.MAX_VALUE);
System.out.println(Factorial(12));
}
public static int Factorial(int a) {
int result = 1; //初始结果
if (a==0) {
result = 1; //0的阶乘
}
for (int i = 1; i <= a; i++) {
long r = (long)result * (long)i; //阶乘溢出结果
result = result * i; //int未溢出阶乘结果
if (result != r) { //判断 int 是否溢出,溢出则不相等
System.out.print("int能储存的最大阶乘数:"+ (i-1) + "! = ");
break; //返回阶乘溢出边界值
}
}
return result; //返回最终结果
}
}