我刚刚开始我的F#冒险并陷入困境。我想编写一个递归函数,该函数从列表中获取元素,成对添加它们并返回列表-int list->(int * int)list
像这样: [x1; x2; x3; x4] = [(x1,x2);(x3,x4)]
这就是我现在所拥有的。
let rec combinePair xs =
match xs with
|[] -> []
|[x] -> [x]
|x::y::xs' -> (x,y)::combinePair xs'
这行不通,但是我觉得可能接近答案。我只是不怎么从这里继续。在我仍在尝试学习的过程中,我希望也许有人可以指出正确的方向,而不是给出完整的答案
欢呼
答案 0 :(得分:5)
我非常接近答案。我忘记添加列表包含奇数个元素的情况下会发生的情况。就我而言,我只是希望它摆脱最后一个要素。这是解决方案
let rec combinePair xs =
match xs with
| [] -> []
| [x] -> []
| x::y::xs' -> (x,y)::combinePair xs'