You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

F# 如何使用递归将单个元素分发到列表的每个元素中

实现方法

你已经写对了递归的终止条件:当传入列表为空时,没有元素需要配对,直接返回空列表[]就符合逻辑。
剩下只需要补全非空列表的匹配分支即可,递归逻辑如下:

  • 当匹配到列表为「头元素h + 剩余尾部列表t」的结构时,先构造待分发元素x和当前头元素h的元组
  • 递归调用con函数处理尾部列表t,把当前构造的元组拼接在递归返回结果的头部,就是当前分支的返回值

补全后的完整可运行代码:

let rec con (x: 'a) (l: 'b list) =
    match l with 
    | [] -> []
    | h :: t -> (x, h) :: con x t

效果验证

执行测试用例:

con "DOG" [1;2;3]

返回结果为[("DOG", 1); ("DOG", 2); ("DOG", 3)],完全符合预期。

补充:该功能也可以直接用内置的列表映射函数实现,无需手动编写递归逻辑:

let con x l = List.map (fun h -> (x, h)) l

内容的提问来源于stack exchange,提问作者kelperg1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 18:45:32