我现在正在学习 Prolog,递归思维对我来说很难。
我有两个列表,例如L1=[1,2,3]
和 L2=[3,1,2]
我应该检查 L1
的所有元素是否都包含在 L2
中
所以 allMembers(L1,L2).
应该返回 true
并且 allMembers(L1,[2,3,4]).
应该返回 false
,因为 4
中没有 L1
我认为有可能获得一个列表的头部并返回 true 如果它在另一个列表中找到该元素(通过将其拆分直到列表只包含一个项目),但我不知道如何在序言。
如果你能帮助我更快地吸收 (?)
我在这里发现了类似的问题,但找不到我的具体问题的答案:/
编辑:
我现在有:
isMemberOf(X,[X|_]).
isMemberOf(X,[_|T]):- member(X,T).
我需要将其用于
L1
到 L2
中的任何元素
最佳答案
解决您的子问题:如果 member(A,B)
是列表 A
的成员,则 B
为真。
关于list - 如何在Prolog中检查一个列表的所有元素是否都是另一个列表的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33554323/