我想转移这样的东西:
[0,1,2,3,4,5,6,7]
到
[6,1,4,3,2,5,0,7]
答案 0 :(得分:1)
这是一个草稿,它将偶数位置的元素反转(这就是我认为你的问题意味着什么)。这可能远非最佳(例如,您应该使split
和join
尾递归):
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);;