繁体   English   中英

从列表中获取元素并以递归方式将它们成对添加F#

[英]Take elements from list and add them in pairs recursively F#

我刚开始我的F#冒险而且被卡住了。 我想编写一个递归函数,它从列表中获取元素,成对添加它们并返回列表 - int list - >(int * int)列表

所以这样:[x1; X2; X3; x4] = [(x1,x2);(x3,x4)]

这就是我现在所拥有的。

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

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

干杯

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM