两种方法的对比
public class PolynomialTest {
//直接方法
public double compute1(double[] c, double x){
double sum = c[0];
for (int i = 1; i < c.length;i++){
sum += c[i] * Math.pow(x,i);
}
return sum;
}
//利用结合律的方法
public double compute2(double[] c,double x){
int len = c.length;
double sum = c[len - 1];
for (int i = len - 2; i >= 0; i--){
sum = sum * x + c[i];
}
return sum;
}
@Test
public void test(){
double[] c = new double[]{1.2,3.0,0.8};
double x = 1.2;
long start = System.currentTimeMillis();
double v = compute1(c, x);
System.out.println(v);
long end = System.currentTimeMillis();
System.out.println("方式一花费时间" + (end - start)); //15
long start1 = System.currentTimeMillis();
double v1 = compute1(c, x);
System.out.println(v1);
long end1 = System.currentTimeMillis();
System.out.println("方式一花费时间" + (end1 - start1)); //0
}
}