关于多项式乘法的问题

时间:2010-05-23 09:54:54

标签: java algorithm

我知道多项式乘法的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

请帮助

2 个答案:

答案 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; 
        }