Prolog递归谓词

时间:2018-04-28 15:17:39

标签: recursion prolog predicates

在Prolog中给出递归定义: 当且仅当X时,定义一个包含参数X的谓词 是一个列表,X的长度是奇数。

我一直试图解决这个问题。我只想自己学习ProLog,并在书中发现了这个问题。

我试过这个,但它可能只适用于偶数长度的列表。

mult2_length( [] ).
mult2_length( [ _, _ | Xs ] ) :-
  mult2_length( Xs ).

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

你必须有这样的谓词:

list([]) :- fail.
list([_]).
list([_,_|T]) :- list(T).

您只需从列表中删除2个元素,直到有0或1。