秦九韶算法
- 原理
一般地,一元n
次多项式的求值需要经过(n+1)*n/2
次乘法和n
次加法,而秦九韶算法只需要n
次乘法和n
次加法。在人工计算时,一次大大简化了运算过程。
把一个n次多项式
改写成如下形式:
求多项式的值时,首先计算最内层括号内一次多项式的值,即
然后由内向外逐层计算一次多项式的值,即
这样,求n次多项式f(x)的值就转化为求n个一次多项式的值。
结论:对于一个n次多项式,至多做n次乘法和n次加法。
- 在计算机中求多项式
c++程序如下
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
class Solution
{
public:
int valueofPolynomial(string s)
{
int len = s.size();
int x, num[1000], dex = 0, temp = 0;
for (int i = 0; i < len; i++)
{
if (s[i] >= '0' && s[i] <= '9')
{
temp = s[i] - '0';
}
else if (s[i] == '+')
{
temp = 0;
continue;
}
else if (s[i] == '^')
{
x = temp;
continue;
}
else
{
num[dex++] = temp;
temp = 0;
}
}
temp = num[0];
for (int i = 1; i < dex; i++)
{
temp = temp * x + num[i];
}
return temp;
}
};
int main()
{
Solution Plain;
string str = "4*3^3+5*3^2+6*3^1+7*3^0";
cout << Plain.valueofPolynomial(str) << endl;
return 0;
}