我完成了我的prolog编码,运行时没有错误。但仍然无法得到我想要的输出。所以我想问问题在哪里。我的编码就像轰鸣声
even_member(X, [X|_]).
even_member(X, [_|Tail]) :-
0 is X mod 2,
write(X), nl,
even_member(X, Tail).
我需要的输出是当键入even_member(2,[1,2,3,4,5,6])时。将获得像bellow
的输出X = 2
X = 4
X = 6
是
任何人都可以帮我告诉我编码的问题是什么。谢谢。
答案 0 :(得分:1)
我可以建议:
even_member(X, List) :-
member(X, List),
0 is X mod 2.
在评估时,给出:
?- even_member(X,[1,2,3,4,5,6]).
X = 2 ;
X = 4 ;
X = 6 ;
false.
否则,如果您想要一次性打印所有值的行为,您可以尝试:
even_member(List) :-
member(X, List),
0 is X mod 2,
write(X), nl,
fail ; true.
在评估时,我们得到:
?- even_member([1,2,3,4,5,6]).
2
4
6
true.