在Prolog中给出递归定义: 当且仅当X时,定义一个包含参数X的谓词 是一个列表,X的长度是奇数。
我一直试图解决这个问题。我只想自己学习ProLog,并在书中发现了这个问题。
我试过这个,但它可能只适用于偶数长度的列表。
mult2_length( [] ).
mult2_length( [ _, _ | Xs ] ) :-
mult2_length( Xs ).
有人可以帮助我吗?
答案 0 :(得分:1)
你必须有这样的谓词:
list([]) :- fail.
list([_]).
list([_,_|T]) :- list(T).
您只需从列表中删除2个元素,直到有0或1。