给出字符串列表[a,b,c]和[d,e],例如,
返回列表[ad,bd,cd,ae,be,ce]。
请不要给我一个答案,只是为新学员指明正确的方向。
答案 0 :(得分:2)
这个问题很棘手,因为你需要遍历两个列表。如果将其作为一个函数编写,则有两个递归来跟踪。
接近它的一种方法是从一个更简单的问题开始。假设您有一个字符串列表l
和一个字符串s
。您是否可以编写一个函数,在s
的每个字符串后附加l
的新列表?
使用List.map
可以直接解决这个更简单的问题。或者你可以编写一个显式递归函数。
之后你只剩下一个剩余的递归来判断,这可能更容易。
<强>更新强>
现在你有了自己的功能,你可以轻松地编写一个函数,将一个字符串附加到第一个字符串列表的所有元素。布局如下所示:
let cross_concat list1 list2 =
let concat_string_to_list1 s = concat_string_to_list list1 s in
...
使用此定义,您可以再次使用List.map
来获取最终结果(需要将生成的字符串列表连接到一个列表中)。或者,您可以使用List.fold_right
来构建结果。或者你可以编写自己的递归函数。
如果您没有编写过多的递归函数,那么可以考虑一下。