序言。使用递归复制列表时的无限循环

时间:2016-12-07 20:43:37

标签: list recursion prolog

基本上我在这里尝试做的是做一个谓词"首先"它从列表中获取第一个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).

1 个答案:

答案 0 :(得分:0)

在另一个thread中找到答案。

take_n(N, List, Taken) :-
    ( length(List, M),
      N > M
    ->
      Taken = List
    ;
      length(Taken, N),
      append(Taken, _, List)
    ).