【发布时间】:2025-12-07 08:40:01
【问题描述】:
我想编写一个程序,从列表中删除每个第 N 个元素,而不是最后一个。我的程序已经运行良好并给了我正确的结果,但是当我要求另一个结果时,prolog 出现错误“>/2:参数没有充分实例化”。这是我到目前为止的代码:
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.
我认为递归的取消条件有问题。如何解决这个问题?
提前致谢!
【问题讨论】:
标签: prolog