题意和原理

大概就是让我们理解 horner’s rule(也叫做秦九韶算法) 的原理和过程。
假定现在有一个n次多项式需要计算。
第二章 习题 2.10 horner's rule - 图1,也就是第二章 习题 2.10 horner's rule - 图2
按照朴素算法来计算,我们需要第二章 习题 2.10 horner's rule - 图3次乘法第二章 习题 2.10 horner's rule - 图4次加法。我们知道做乘法的代价是很高的,所以朴素算法是非常低效的。
那么,现在引入今天的重头戏——秦九韶算法(Horner法则)。
第二章 习题 2.10 horner's rule - 图5
第二章 习题 2.10 horner's rule - 图6
这样,对于一个n次多项式,我们至多需要做第二章 习题 2.10 horner's rule - 图7次乘法和第二章 习题 2.10 horner's rule - 图8次加法。

代码实现

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. int arr[5]={2,1,0,8,4};
  5. int n=4;
  6. int x=3;
  7. double poly=0;//ploynomial,多项式
  8. for(int i=n;i>=0;i--){
  9. poly=arr[i]+x*poly;
  10. }
  11. cout<<"poly="<<poly<<endl;
  12. }

根据上文分析,时间复杂度是 O(n)。

参考

数论 | 秦九韶算法(Horner法则) //写的挺详细,强烈推荐