3

我正在学习 rooPlog 并且在列表方面遇到了一些麻烦。我想返回一个类列表,这些类是指定类的先决条件。这是我到目前为止...

prereq(262, 221).
prereq(271, 262).
prereq(331, 271).

prerequisites(A, B) :- not(prereq(A, C)).
prerequisites(A, [C|B]) :- prereq(A, C), prerequisites(C, B).

它可以工作,但会将垃圾附加到末尾。

?- prerequisites(331, A).
A = [271, 262, 221|_G327] ;
false.
4

1 回答 1

3

也许你的意思是

prerequisites(A, []) :- not(prereq(A, _)).
prerequisites(A, [C|B]) :- prereq(A, C), prerequisites(C, B).

您必须确保数据中没有循环才能使其正常工作...

于 2012-05-08T17:12:19.063 回答