在prolog中给出递归定义:定义一个谓词,该谓词在且仅当x时才定义一个参数x是一个列表,x的长度很奇怪。
我一直在尝试解决这个问题。我只是想自己学习序言,并在书中发现这个问题。
我已经尝试过,但它可能仅适用于均匀的列表。
mult2_length( [] ).
mult2_length( [ _, _ | Xs ] ) :-
mult2_length( Xs ).
任何人都可以帮我吗?
您必须具有这样的谓词:
list([]) :- fail.
list([_]).
list([_,_|T]) :- list(T).
您只是继续从列表中删除2个元素,直到有0或1个。