Function 如果sml中的x=整数,如何编写计算F(x)的函数
我试图编写一个递归函数,它以一个列表和一个整数作为参数,其中列表是多项式,即(valp=[5.0,4.0,0.0,1.0]=x^3+4x-5),整数参数是x,即x=2,因此f(2)=x^3+4x-5。这是我到目前为止所说的 valp=[5.0,4.0,0.0,1.0]; vala=2Function 如果sml中的x=整数,如何编写计算F(x)的函数,function,recursion,math,sml,Function,Recursion,Math,Sml,我试图编写一个递归函数,它以一个列表和一个整数作为参数,其中列表是多项式,即(valp=[5.0,4.0,0.0,1.0]=x^3+4x-5),整数参数是x,即x=2,因此f(2)=x^3+4x-5。这是我到目前为止所说的 valp=[5.0,4.0,0.0,1.0]; vala=2 fun eval(nil, a) = 0.0 | eval(x::xs, a:real) = x + (eval(xs, a) * a) eval(P, a); 运行代码后,它会给我以下
fun eval(nil, a) = 0.0
| eval(x::xs, a:real) =
x + (eval(xs, a) * a)
eval(P, a);
运行代码后,它会给我以下错误:
stdIn:22.4-24.11错误:运算符不是函数[tycon不匹配]
接线员:真的吗
在表达上:
(eval(xs,a)*a)eval
递归“假定”的工作方式是p=a+Qx,其中p是原始列表,a是x::xs中的x,Q是xs,x是传递的整数参数。
任何帮助都将不胜感激。谢谢 好吧,我想起来了。给你
val P = [~5.0, 4.0, 0.0, 1.0];
val a = 2.0;
fun eval(nil, a) = 0.0
| eval(x::xs, a:real) =
x + (eval(xs, a) * a);
eval(P, a);
既然你回答了自己的问题(太好了!),那么这里有另一种写作方式:
fun eval ([], _) = 0.0
| eval (x::xs, y) = x + eval (xs, y) * y
原来的问题有缺陷。如果f(x)=x是实数而不是整数,则应该是。