小编S.E*_*eth的帖子

在 F# 中为两个列表定义 zip 函数

遇到问题时遇到困难:

定义一个名为 zip 的函数,它将一对等长列表(元组)作为单个参数并返回一个对列表。第一对应包含每个列表的第一个元素,第二对包含每个列表的第二个元素,依此类推。

我一直被困住,正在寻求建议,看看我是否朝着正确的方向前进,或者应该尝试另一种方法。

它需要是单个函数定义,没有任何嵌套函数,并且不能使用内置函数!

我所做的是:

    let rec zip (a , b) =
       if List.length a = 1 then List.head a , List.head b
       else zip (List.tail a , List.tail b) 
Run Code Online (Sandbox Code Playgroud)

什么时候

     > zip (["a"; "b"; "c"; "d"; "e"], [1; 2; 3; 4; 5]);;
Run Code Online (Sandbox Code Playgroud)

已输入

      val it : string * int = ("e", 5) 
Run Code Online (Sandbox Code Playgroud)

被返回。预期结果应该是

     val it : (string * int) list = [("a", 1); ("b", 2); ("c", 3); ("d", 4); ("e", 5)]
Run Code Online (Sandbox Code Playgroud)

recursion f#

1
推荐指数
1
解决办法
1591
查看次数

标签 统计

f# ×1

recursion ×1