Prolog如何在列表中打印前3个元素

时间:2011-10-12 13:41:02

标签: prolog

如何打印列表中的前3个元素。

我有一个打印方法

print([]).
print([X]) :-    !, write(X).
print([X|T]) :-    write(X),    write(', '),   print(T), nl.

2 个答案:

答案 0 :(得分:9)

在Prolog中,实现迭代的典型方法是递归:

print(0, _) :- !.
print(_, []).
print(N, [H|T]) :- write(H), nl, N1 is N - 1, print(N1, T).

如果我们达到零或有一个空列表,则什么都不做。如果我们应该做某事,打印列表中的第一项,计算新的N并递归调用自己。

第一个子句中的剪切(!)是必要的,否则我们需要最后一个N的条件。

答案 1 :(得分:4)

如果你总是至少拥有树元素那么简单

 print_first_three([A,B,C|_]) :- print(A), print(B), print(C).