我必须为大学做一个Prolog作业,而我大部分时间都已完成,但我在输出中不断获得_G
变量。
我们需要将列表 - L
- 与常规字词K
进行比较,如果列表中的项目大于该字词,请将其添加到另一个列表中 - {{ 1}} - 。
这是我的代码
R
虽然有效,但我teilliste_grK([],0,[]).
teilliste_grK([],_,[_]).
teilliste_grK([H|T],K,L) :-
( H > K
-> L = [H|R],
teilliste_grK(T,K,R)
; L = R,
teilliste_grK(T,K,R)
).
?- teilliste_grK([12,4,1,34,5,45],9,R).
而不是R = [12,34,45]
。我只是不知道为什么。
答案 0 :(得分:1)
谓词的正确第一个子句是你现在拥有的两个子句的组合。
第一个坚持认为 K 为0:你不想要这个。第二个坚持在第二个列表的末尾有一个额外的变量:你也不想要这个。
只需忽略 K 并关闭列表:
foo([], _, []).