计算多项式,有着笨的方法就是例如X^3就是直接用循环去计算x*x*x,这当然是一种但是这样的计算其复杂度是在不断上升的。其对于资源的浪费是显而易见的。
原来的直接计算--用C++来表示
template <class T>
T ployEval(T coeff[],int n,const T &x)
{
//coeff[]保存的是系数
T y=1,value=coeff[0];
for(int i=0;i<n;i++)
{
y*=x;
value+=y*coeff[i];
}
return value;
}
对于优化的数学算法Horner算法
template <class T>
T ployEval(T coeff[],int n,const T &x)
{
T value=coeff[n-1];for(int i=0;i<n;i++)
{
value=value*x+coeff[n-i];
}
return value;
}
horner 算法相比原来的算法其优化:在剩法的次数上少了近一倍多。其实就现在而言其实对于X^n 这样我们是不是可以将它每次次数除以2,这样会比你直接遍历优化很多。
知道自己还有很多的不足之处,学习是件快乐的事,分享会使自己更加快乐。