如何打印列表中的前3个元素。
我有一个打印方法
print([]).
print([X]) :- !, write(X).
print([X|T]) :- write(X), write(', '), print(T), nl.
答案 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).