我正在尝试编写一个函数,它接受两个列表并返回true,如果第一个列表中的每个元素至少在第二个列表中出现一次。例如:Prolog allMember函数
allMember(X, [a,b]).
X = [] ;
X = [a] ;
X = [b] ;
X = [a a] ;
X = [a b] ;
X = [b a] ;
X = [b b] ;
false.
麻烦的是,在最后;该程序循环无限检查每个可能的列表。我怎样才能解决这个问题?
allmember([], _).
allmember([F|R], L2) :- length([F|R], Len1),
length(L2, Len2),
Len1 =< Len2,
member(F, L2),
allmember(R, L2).
都列表排序? – 2014-10-06 06:11:15
@CommuSoft这是一个很好的问题,但从他的示例输出来判断,可能不是。尽管如此,仍然需要澄清。 – 2014-10-06 06:25:55