您好
我有一个问题,我们如何使用Horner数据结构来显示类似“x^100+1
”的多项式?
例如对于上面的多项式我们 需要大小为101的数组,其索引 显示了这个多项式的幂 array [100] = 1和array [0]的示例 = 1,不幸的是所有其他索引都是0 !!!但还有另一个 与此不同的方式 有助于显示一个多项式 阵列!!!我想知道那种方式
感谢
答案 0 :(得分:1)
通常用于形式的多项式
A * x^n + B * x^n-1 + ....
你只需要知道n并存储(A,B,...)你可以为数组或列表。对于表示,您只需要n和此列表。 我不确定你是否对评估感兴趣,但它会像
一样ArrayList<int> list = new ArrayList<int>();
用A,B,......填充清单
int result;
for(int i=0; i<n; i++)
result+= list.get(i) * Math.pow(valueOfX, n-i);
答案 1 :(得分:1)
horner方案(http://en.wikipedia.org/wiki/Horner_scheme)是表示多项式的另一种方式,但由于信息内容相同,因此需要相同数量的信息(相同的数组大小)。唯一的区别是我们计算多项式时的排序。
p(x) = (...((a[n] * x + a[n-1]) * x + a[n-2]) ...) * x + a[0]
在你的例子中,我们将再次得到[100] = 1,a [0] = 1,其余为零。
在这种情况下,计算多项式的代码将是
result = a[n];
for(int i=n-1;i>=0;i--) {
result = result * x + a[i];
}