2016-12-07 1 views
0

私がここでやろうとしているのは、最初のCメンバーをリストから取り出して同じリスト内で新しいリストを作成する "最初の"述語です。例えば最初([a、b、c、d、e]、3、R)。 R = [a、b、c]を返します。 今、無限ループが発生しており、原因を見つけることができません。ご協力いただきありがとうございます。Prolog。リストをコピーするために再帰を使用している無限ループ

first([],_,[]). 
firts([_], 0, []). 
first([H|T], C, R):- C >= 1, 
       append(R, [H], R2), 
       C2 is C - 1, 
       first(T, C2, R2). 

答えて

0

回答は別のthreadで見つかりました。

take_n(N, List, Taken) :- 
    (length(List, M), 
     N > M 
    -> 
     Taken = List 
    ; 
     length(Taken, N), 
     append(Taken, _, List) 
    ). 
関連する問題