我應該優化下面的代碼,以便它計算中心二項係數達到整數的最大值(最多n = 16)。Java:避免階乘溢出
public static int factorial(int n)
{
int result= 1;
for(int i = 2; i <= n; i++) result *= i;
return result;
}
public static int centralbinom(int n)
{
return factorial(2*n)/(factorial(n) * factorial(n));
}
當然,我得到一個溢出每n> 6. 如何「打破」階乘功能,使不具有處理大的數字,如爲2n = 2 * 16 = 32?
還是有更好的方法來計算中央二項式係數?
你得到7的溢出! ? – NWard
@NWard 14! (2 * N) –
你有沒有想過使用BigInteger? –