我知道多项式乘法的horners方法更快但在这里我不知道这里发生了什么是代码
public class horner{
public static final int n=10;
public static final int x=7;
public static void main(String[] args){
//non fast version
int a[]=new int[]{1,2,3,4,5,6,7,8,9,10};
int xi=1;
int y=a[0];
for (int i=1;i<n;i++){
xi=x*xi;
y=y+a[i]*xi;
}
System.out.println(y);
//fast method
int y1=a[n-1];
for (int i=n-2;i>=0;i--){
y1=x*y+a[i];
}
System.out.println(y1);
}
}
这两种方法的结果不一样 第一种方法的结果是
462945547
和第二种方法的结果是
-1054348465
请帮助
答案 0 :(得分:2)
您在第二个循环中使用y
:
y1=x*y+a[i];
这就是编写两个函数会派上用场的方法 - 重用同一个变量是不可能的。
答案 1 :(得分:0)
看看这个循环:
for (int i=1;i<n;i++){
xi=x*xi;
y=y+a[i]*xi;
}
我认为你应该使用
for (int i=0;i<n;i++){
xi=x*xi;
y=y+a[i]*xi;
}