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