gpt4 book ai didi

java - 带数组的二项式系数

转载 作者:行者123 更新时间:2023-12-01 21:14:24 25 4
gpt4 key购买 nike

我正在尝试编写二项式系数的代码。我已经制定了二项式系数的方法,但我的程序必须初始化一个应显示二项式系数的数组,但我只允许使用二项式方法({1,1,1,1,2,1 },例如)。这是我的代码。我真的不知道如何在这种条件下完成这项工作。

public static int faculty(int factorial) {
int CalculatedFactorial = 1;
for (int i=2;i<=factorial;i++)
{
CalculatedFactorial = CalculatedFactorial*i;
}
return CalculatedFactorial;
}

public static int binomialCoefficient(int n,int k) {
int num = faculty(n);
int denum = faculty(k)*faculty(n-k);
int BinomCoefResult=(int)(num/denum);
return BinomCoefResult;
}

public static int[] triangleOfBinCoeff(int heightOfTriangle) {
int [] arrayTr;
for(int i=0;i<heightOfTriangle;i++)
{
for (int m=0;m<=i;m++)
{
arrayTr[i]= PascalsTriangle.binomialCoefficient();
}
}
return arrayTr;
}

我真的很感激任何帮助。

最佳答案

一个问题是阶乘的计算。因为阶乘增长得很快,计算 13!将溢出 int 的容量。您应该寻找一种更有效的方法来计算 n!/(n - k)!,因为分母通常足够大以保持表达式的整体值较小。

在你的方法中triangleOfBinCoeff() ,存在很多问题。

public static int[] triangleOfBinCoeff(int heightOfTriangle) {
int [] arrayTr;
for(int i=0;i<heightOfTriangle;i++)
{
for (int m=0;m<=i;m++)
{
arrayTr[i]= PascalsTriangle.binomialCoefficient();
}
}
return arrayTr;
}

您没有为 arrayTr 分配数组。您需要预先计算必要的大小,并初始化 arrayTr ,或使用动态分配的结构,如 List<Integer>相反。

那么您就不会向 binomialCoefficient() 传递任何参数,以及数组元素 arrayTr[i]尝试将结果分配给的行号是不正确的。您想要使用最后一行中的列 ( m ),或者您可能正在构建整个三角形并且需要跟踪先前写入的元素的计数。

关于java - 带数组的二项式系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58883166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com