gpt4 book ai didi

f# - 交换 F# 列表中的每对项目

转载 作者:行者123 更新时间:2023-12-01 01:17:47 27 4
gpt4 key购买 nike

我确信有一种更好的方法可以成对交换列表中的项目 ( [1;2;3;4] -> [2;1;4;3] ),因为我做的太多了根据我的喜好附加,但我不确定如何最好地做到这一点。

let swapItems lst =
let f acc item =
match acc with
| [] -> [item]
| hd :: next :: tl when tl <> [] -> [next] @ tl @ [item;hd]
| _ -> item :: acc
List.fold f [] lst

我该如何改进?这仅适用于长度为偶数的列表。

最佳答案

最简单的解决方案:

let rec swapItems = function
| a::b::xs -> b::a::swapItems xs
| xs -> xs

我喜欢将像列表这样的序列变量命名为“复数”,例如xs 而不是 x

请注意,这不是尾递归,因此如果给它一个很长的列表,它会堆栈溢出。

关于f# - 交换 F# 列表中的每对项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7464872/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com