所以我得到了这个用于powerset:
powerset([], []).
powerset([H|T], P) :- powerset(T,P).
powerset([H|T], [H|P]) :- powerset(T,P).
这会生成一个列表的所有集合。是否可以按列表顺序生成所有集合。
例子:
List = [a,b,c]
我想得到
[a],[a,b],[a,b,c],[b],[b,c],[c]
请注意,此子集列表中没有[a,c]
,因为这些子集是从左到右的子集。
我尝试过结合使用追加和递归,但这并没有达到我想要的效果。小小在这一点上愣住了。
谢谢。