【问题标题】:How to write a function that calculates F(x) if x = integer in sml如果 x = sml 中的整数,如何编写一个计算 F(x) 的函数
【发布时间】:2020-07-10 03:25:53
【问题描述】:

我正在尝试编写一个以列表和整数作为参数的递归函数,其中列表是多项式,即 (val P = [5.0, 4.0, 0.0, 1.0] = x^3 + 4x - 5 ) 并且整数参数是 x 即 x = 2 所以 f(2) = x^3 +4x - 5。这是我到目前为止提出的...

val P = [5.0, 4.0, 0.0, 1.0]; val a = 2;

fun eval(nil, a) = 0.0
    | eval(x::xs, a:real) = 
        x + (eval(xs, a) * a)
eval(P, a);

运行代码后,它给了我这个错误: 标准输入:22.4-24.11 错误:运算符不是函数 [tycon 不匹配] 运营商:真实 表达: (eval (xs,a) * a) 评估

“假设”递归的工作方式是 P = a + Qx,其中 P 是原始列表,a 是 x::xs 中的 x,Q 是 xs,x 是传递的整数参数。 任何帮助将非常感激。谢谢!!

【问题讨论】:

    标签: function recursion math sml


    【解决方案1】:

    好的,我想通了。来吧……

    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);
    

    【讨论】:

    • 原来的问题有缺陷。如果 f(x) = x 是实数而不是整数,则应该是这样。
    【解决方案2】:

    既然你回答了你自己的问题(你真好!)这是另一种写法:

    fun eval ([], _) = 0.0
      | eval (x::xs, y) = x + eval (xs, y) * y
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多