求java大神,一道高精度题,怎么这样不可以,该怎么改

2024-11-22 00:22:43
推荐回答(4个)
回答(1):

请参考我的:乎雹衡
最后一个是利用BigInteger类制成的岁做,这里可以用更大的肆稿更大的阶乘。
public class Factorial{
protected static ArrayList table = new ArrayList();
static{ table.add(BigInteger.valueOf(1));}

public static synchronized BigInteger factorial(int x){
for(int size=table.size();size<=x;size++){
BigInteger lastfact= (BigInteger)table.get(size-1);
BigInteger nextfact= lastfact.multiply(BigInteger.valueOf(size));
table.add(nextfact);
}
return (BigInteger) table.get(x);
}
}
System.out.print(factorial(1977));
}
}

回答(2):

add里面的参数必须也是BigInteger类型,你用b.add(c)或者new一桥亏个BigInteger d = new BigInteger("1"); b.add(d)就哗消亮可以了乱宽

回答(3):

BigInteger num = new BigInteger("1");
for(int i = 1;i!=1978;i++){
num = num.multiply(new BigInteger(i+"棚孝"));
}
System.out.println(num);

你的链笑稿错误升友应该修改为 b=b.add(new BigInteger("1"))

回答(4):

BigInteger类中有add这个方法吗?