Factorial in Java

Tob*_*oby 4 java factorial

我一直在使用这个Java的阶乘程序:

public static long factorial(int a) {

    if(a<1) {
        return 1;
    }
    long result=1;
    long x=a;
    while(x>1) {
        result*=x;                     
        x--;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

然而,它似乎"破裂"并在25的阶乘后返回一个负数.它返回一个负数然后只返回"0".

我做错了导致这种情况吗?

SLa*_*aks 7

你已经满溢了long.
请BigInteger改用.