OCaml如何仅反转列表中的偶数值

时间:2014-01-23 09:24:56

标签: ocaml

我想转移这样的东西:

[0,1,2,3,4,5,6,7]

[6,1,4,3,2,5,0,7]

1 个答案:

答案 0 :(得分:1)

这是一个草稿,它将偶数位置的元素反转(这就是我认为你的问题意味着什么)。这可能远非最佳(例如,您应该使splitjoin尾递归):

let rec split = function
| [] -> [],[]
| h::[] -> [h],[]
| x::y::t -> let a,b = split t in x::a, y::b;;

let rec join a b = match a,b with
| [],_ -> b
| _,[] -> a
| ha::ta,hb::tb -> ha::hb::(join ta tb);;

let doit l = let a,b = split l in join a (List.rev b);;