基本上我在这里尝试做的是做一个谓词"首先"它从列表中获取第一个C成员,并以相同的排列从中生成一个新列表。例如第一([A,B,C,d,E],3,R)。将返回R = [a,b,c]。 现在我得到了一个无限循环而无法找到原因。谢谢你的帮助。
first([],_,[]).
firts([_], 0, []).
first([H|T], C, R):- C >= 1,
append(R, [H], R2),
C2 is C - 1,
first(T, C2, R2).
答案 0 :(得分:0)
在另一个thread中找到答案。
take_n(N, List, Taken) :-
( length(List, M),
N > M
->
Taken = List
;
length(Taken, N),
append(Taken, _, List)
).