P(n) = a0 * x0 + a1* x1 + a2 * x2 + … + an * xn
定义tmp = an+1 = 0
上推一步:an+1 * x + an tmp = tmp *x + k[n] = k[n]
第一步:先求an * x + an-1 tmp = k[n] * x + k[n-1]
第二步:第一步的结果再乘以x + an-2。就是(an * x + an-1) * x + an-2 (k[n] * x + k[n-1]) *x + an-2
第三步:...
第N-1步:
第N步:第N-1 步的结果乘以x + a0
求出结果
阶数是已知的,系数也是已知的。x是参数,求出函数的解。
1、整形系数、整形参数返回整形值的实现
int k【10】 = {1,2,3,4,5,6,7,8,9,10};//存储的是a0、a1...an
long Horner(int*k,int n,long x)
{
long y=0;
while(n>=0)
{
y= y* x + k[n]
n--;
}
return y;
}
int main(int argc,char **argv)
{
long y = 0;
y = Horner(k,3,2);
return 0;
}