对于多项式
传统的做法需要n(n+1)/2次乘法和n次加法,而秦九韶算法:
只需n次加法和n次乘法。
/**
*秦九韶算法解多项式
*假设ak=k
*公式为:Sn=an;Sk=xSk-1+ak;P(x)=S0
**/
#include <iostream>
using namespace std;
double qinJiuShao(int n, double x){
double s = 0.0;
double k = n;
s = k;
while(n){
s = x * s + --k;
// cout<<"s "<<s<<" k "<<k<<endl;
n--;
}
s = s + k; //k is k0
return s;
}
int main(){
int n;
double x;
cout << "Please input n: " << endl;
cin >> n;
cout << "Please input x: " << endl;
cin >> x;
cout << qinJiuShao(n, x);
}