java - 关于多项式乘法的问题

标签 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

请帮忙

最佳答案

您在第二个循环中使用 y:

y1=x*y+a[i];

这就是写两个函数会派上用场的地方——不可能重用同一个变量。

关于java - 关于多项式乘法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2891276/

相关文章:

java - 无法启动 JMXConnectorServer

c++ - 快速数组比较和用最接近的值替换元素的算法。 (追踪点)

python - 尝试将 python 片段导入 C/C++(PI spigot 算法)

java - 在 Android 应用程序的标签中解析 HTML 中的 JSON

java - 我的 Push 功能出了什么问题?堆叠

基于桶总和对数字集进行桶化的算法

vba - Excel VBA 代码 - 有限制的组合

actionscript-3 - 最接近组合几何形状(复合形状)的点

java - executeUpdate() 抛出 ArrayIndexOutOfBoundsException

java - 具有接口(interface)和 validator 的泛型