我想定義一個成員謂詞。成員(A,B)意味着列表A的所有成員都是列表B的成員。 top(N)定義A可以有多長。Prolog中的成員謂詞
這是我的嘗試:
top(5).
members([X], L):-
member(X, L).
members([X| Xs], L):-
member(X, L),
members(Xs, L),
length(Xs, M),
top(N),
M < N.
我想用它如下:
members(L, [1,2,3]).
我的執行的問題是,如果我;得到新的答案,我會完成一個錯誤:超出本地堆棧
?- members(I, [1,2,3]).
I = [1] ;
I = [2] ;
I = [3] ;
I = [1, 1] ;
I = [1, 2] ;
I = [1, 3] ;
I = [1, 1, 1] ;
I = [1, 1, 2] ;
I = [1, 1, 3] ;
I = [1, 1, 1, 1] ;
I = [1, 1, 1, 2] ;
I = [1, 1, 1, 3] ;
I = [1, 1, 1, 1, 1] ;
I = [1, 1, 1, 1, 2] ;
I = [1, 1, 1, 1, 3] ;
;ERROR: Out of local stack
如何更改我的代碼以防止此內存不足?
該評論不會導致解決方案。 –