从f#中的列表中删除元素

Dr.*_*erg 2 f# tail-recursion f#-3.0

假设我有一个排序列表l,可能有重复值 - 我想返回一个列表,其值为n,但只返回一次. - 例如,对于输入[1,2,3,3,3,4]和3,返回[1,2,3,3,4].我该怎么做?

scr*_*wtp 6

最简单的方法是这样的:

let rec remove n lst = 
    match lst with
    | h::tl when h = n -> tl
    | h::tl -> h :: (remove n tl)
    | []    -> []
Run Code Online (Sandbox Code Playgroud)

你递归地遍历列表,直到找到n- 如果你这样做,你丢弃并返回尾部.请注意,这不是尾递归,但可以轻松实现.