使用map
求给定多项式在特定x值处的值
输入:
- p:增加x功率的系数列表
- x:计算 x的值
输出:表示求值多项式值的数字
示例:poly_eval([1, 2, 3], 2) = 1(2)^0 + 2(2)^1 + 3(2)^2 = 17
def poly_eval(coeff_list, x):
total = 0
for i, coeff in enumerate(coeff_list):
total += coeff * x**i
return total
或者如果你真的想使用map:
def poly_eval(coeff_list, x):
n = len(coeff_list)
return sum(map(lambda coeff, x, y: coeff*x**y, coeff_list, [x]*n, range(n)))
这实际上是一个有趣的问题。因为答案相对简单,而且纸笔的解决方案是大家都知道的,所以真正的事情有点被忽视了。
如前所述,通常大多数人会用笔和纸来写。然而,有一种更好的方法更适合于编码目的,被称为Ruffini Horner方法。
将多项式写在数组中。所以y = x^3-7x+7
=var y = [1,0,-7,7]
然后一个简单的函数;
var calcP = (y,x) => y.reduce((p,c) => p*x+c);
。