0

假设我们有一个元素列表:

[(a,b); (c,d); (e,f)]

什么函数会检查元素(比如说 A,其中 A=(x,y))是否在列表中?

4

2 回答 2

3

用于List.mem搜索匹配项。

let a = (3,4)
List.mem a [(1,2); (3,4); (5,6)]

List.memq如果要检查这两个项目是否都引用内存中的同一实体,也可以使用。

于 2013-04-08T20:28:44.640 回答
0

这是有关如何自己编写此内容的提示。处理列表的自然方法是首先查看第一个元素,然后递归检查列表的其余部分,直到您有一个空列表。对于这个问题,你可以用英文陈述算法如下:

如果列表为空,则该项目不在列表中,否则如果第一个列表元素等于该项目,则它在其中,否则它是(该项目在列表的其余部分中吗?)的答案

现在您只需将其转换为 OCaml 代码(使用递归函数)。

一般来说,如果你可以用问题的更小或更简单的部分来描述你想要做什么,那么编写递归代码就很简单了(尽管你必须小心基本情况是正确的)。当使用列表或树结构数据时,分解问题的方法通常很明显。

于 2013-04-10T10:38:55.990 回答