1
我想編寫一個程序,它從列表中刪除每個第N個元素,而不是最後一個元素。我的程序已經正常工作,給了我正確的結果,但是當我詢問另一個結果時,prolog帶有錯誤「>/2:參數沒有充分實例化」。這裏是我到目前爲止的代碼:刪除列表中的所有N個元素
delete_elements([],0,[]).
delete_elements([],_,[_|_]).
delete_elements(L,N,R) :-
length(L,LL),
LL > N,
nth1(N,L,_,RZ),
NZ is N + 1,
delete_elements(RZ,NZ,RR),
R = RR.
delete_elements(L,N,R) :-
length(L,LL),
LL =< N,
delete_elements([],_,R),
L = R.
我認爲遞歸的取消條件有問題。如何解決這個問題?
在此先感謝!
謝謝!你知道爲什麼該程序只適用於N = 2?如何使程序適用於每個N(1,3等)? – zer0kai
給出一個輸入期望輸出的例子... – coder
例如,當我要求delete_elements([1,2,3,4,5,6,7,8,9],3,R)時,輸出應該是R = [1,2,4,5,7,8,9],因爲最後一個元素(9)應該在列表中。 – zer0kai