多项式求值算法(递归)

  (1)     原问题是这样的:求多项式a+b*x+c*x^2+d*x^3+...+要求输入该多项式的系数和x的值后打印出这个多项式的值,要求用比较好的算法。这是北理工2004年复试的一道上机题目。

     由于计算机基础比较差,我最开始也不知如何下手,来实现最简单算法,就去往上搜了下,才知道用秦九昭(我国古代的一个数学家)算法,他的算法原理是这样的:

     (秦九韶方法):P(x)=((cn*x+cn-1)*x+cn-2)*x+···)*x+c0     

  转化成递归形式就是这样的  :

      n阶多项式:Pn(x) = an.x^n + a(n-1).x^(n-1) + ... + a1.x + a0
      把上面公式改写成:
       Pn(x) = an.x^n + a(n-1).x^(n-1) + ... + a1.x + a0
             = ((...((((an)x + a(n-1))x + a(n-2))x + a(n-3))x...)x + a1)x + a0
我仿照网上的自己也写了两个算法:
第一个:
   double horner2(double coef[],int max,int n,double x) {   int i;   double value=coef[n];   for(i=1;i<=n;i++)    value=value*x+coef[n-i];   return value; }
其中coef[]是系数的数组,从小到大排列,n是数组元素的个数(数组从零开始), max是x的最高次幂。
 第二个
double horner(double coef[],int max,int n,double x) {  double value;  if(n==0) value=coef[max-n];  else   value=horner(coef,max,n-1,x)*x+coef[max-n];  return value; }
我的测试结果是
       1 2 3 4   x=2
   1+2x+3x^2+4x^3
   49
这是我第一次写博客,尽管内容几乎全是转载的,但是我还是很认真的,希望大家支持,希望我的博客能成为大家交流知识的平台!
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值