首页 > 解决方案 > 从列表中获取元素并递归地成对添加它们 F#

问题描述

我刚刚开始我的 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'

这不起作用,但我觉得它可能接近答案。我只是不知道如何从这里继续。由于我仍在努力学习,我希望也许有人可以为我指明正确的方向,而不是给我完整的答案

干杯

标签: listf#tuples

解决方案


我非常接近答案。我忘了添加在列表包含奇数个元素的情况下会发生什么。就我而言,我只是希望它摆脱最后一个元素。这是解决方案

let rec combinePair xs = 
  match xs with
  | [] -> []
  | [x] -> []
  | x::y::xs' -> (x,y)::combinePair xs'

推荐阅读