为什么这个prolog代码只返回一个结果?

时间:2013-04-14 21:36:37

标签: prolog

我正在学习Prolog参加期末考试,而且从课程开始就无法弄清楚我在这个作业问题上做错了什么。

这不完全是一个“家庭作业”问题,它是“为最后一个问题学习”,所以如果有人能给我一个正确的答案,那将是一个很大的帮助。 :(

问题是:

%% b) Write a predicate after(X, List, Result) that returns everything 
%% in a list after any occurrence of the given element X.
%% ?- after(a,[b,a,x,d,a,f,g],R).
%% R = [x,d,a,f,g];
%% R = [f,g];
%% no

我的解决方案就是这样,但它只返回R的一个值,而不是两个。

after(X,[_,X|R],R).

?- after(a,[b,a,x,d,a,f,g],R).
R = [x, d, a, f, g].

我做错了什么?

1 个答案:

答案 0 :(得分:3)

关于这个问题的小时数,我一发布就把它想出来了!

仅供参考,这是我的解决方案:

after(X,[X|R],R).
after(X,[_|Z],R) :-
    after(X,Z,R).