我想计算C(n,k)的答案,例如C(10,2)= 10 * 9/2 * 1 = 45如果我用10这样的小数测试我的代码,则该代码有效。但是,当我尝试计算C(1000,900)时,它会编译
线程“主”中的异常java.lang.ArithmeticException:/零
我见过有人说应该使用它BigInteger,但是在尝试之后,它仍然有错误。
例如:我更改int factorial 为 BigInteger factorial,而for循环为cSelect,我无法更改int i为BigInteger类型,结果,答案up/factorial(y)有误。
请帮助我解决此问题。谢谢!!
public class Test {
// Write a factorial function
static int factorial(int m) {
int result =1;
for (int i=2; i<=m; i++) {
result = result*i;
}
return result;
}
// Caculate C(x,y)
static int cSelect(int x, int y) {
int up=1;
for(int i=x; i>=(x-y+1); i--) {
up = up*i;
}
return up/factorial(y);
}
public static void main(String[] args) {
System.out.println(cSelect(1000,900));
}
}
鸿蒙传说
相关分类