2017-03-08 90 views

回答

1

这是一个提示。使用相同的基本逻辑。编写一个函数minmax以返回一对形式为(min,max)的值,然后在递归步骤中,使用模式匹配来提取这两个值。模板是:

fun minmax [] = raise Empty 
| minmax [x] = (x,x) 
| minmax (x::xs) = 
    let 
    val (a, b) = minmax xs 
    in 
    <fill in the code> 
    end; 

在上面a将是最小和b最大。根据ab和第三个值x,返回(x,b)(a,x)(a,b),具体取决于不等式如何发挥。您将需要不止一个if

1

这是一个不同的提示:使用一个辅助函数来存储当前的(最小值,最大值),并在完成迭代时返回这些值。模板为:

fun minmax [] = raise Empty 
    | minmax (y::ys) = 
    let fun helper [] (min, max) = ... 
      | helper (x::xs) (min, max) = ... 
    in helper ys (y, y) end 
相关问题