Prolog递归检查一个项目是否在列表中
问题描述:
所以我想写一段代码来检查项目是否在列表中。Prolog递归检查一个项目是否在列表中
is_member(_,[]).
is_member(X,[X|_]).
is_member(X,[_|tail]):- is_member(X,tail).
这是目前我所用的代码。如果该项目位于第一个位置,但不检查列表的其余部分,则它可以工作。任何人都可以帮我弄清楚我做错了什么?谢谢。
答
谓词面临以下两个问题:
情况
is_member(_,[]).
将始终是一个空列表,这是不正确返回true的基础;和你的变量应该有ü ppercase字符开始:尾。
一个例子如何实现解决了这两个问题,一个断言:
is_member(X,[X|_]).
is_member(X,[_|Tail]):- is_member(X,Tail).
怎么样使用内建的['成员/ 2'](http://www.swi-prolog.org/pldoc/doc_for?object = member/2)函数 –