在prolog中插入函数
我正在编写一个insert函数,它包含两个参数,一个数字和一个排序列表,它应该生成相同的列表,并且数字包含在它的正确位置。 以下是我目前得到的信息:在prolog中插入函数,prolog,Prolog,我正在编写一个insert函数,它包含两个参数,一个数字和一个排序列表,它应该生成相同的列表,并且数字包含在它的正确位置。 以下是我目前得到的信息: insert1(X,[]) :- [X]. insert1(X, [H|T]) :- X > H, insert1(X,T). insert1(X,[H|_T]) :- X < H, T is [X|T]. 我会感谢你们的帮助 错误消息非常神秘:'./2它是列表构造函数,您正在调用它。有关语法的详细
insert1(X,[]) :-
[X].
insert1(X, [H|T]) :-
X > H,
insert1(X,T).
insert1(X,[H|_T]) :-
X < H,
T is [X|T].
我会感谢你们的帮助 错误消息非常神秘:'./2它是列表构造函数,您正在调用它。有关语法的详细解释,请参见问题 最后一个子句也是错误的,因为is/2只能用于算术 但一般来说,你是从一个错误的“角度”来处理问题的。Prolog中的参数是不可变的。您需要另一个参数来保存修改后的列表 这里是第一条和第三条可能的解决方法
insert1(X, [], [X]).
...
insert1(X, [H|T], [X,H|T]) :-
X < H.
好的,让我来做这件事,如果我有任何问题,我会给你回复的。谢谢你的帮助。我仍然有这个问题:这里是我到目前为止得到的:insert1(X,[],[X])。插入1(X[H | T],[H | T]):-X>H,插入1(X,T,| T1)。insert1(X[H | | | T],[X,H | T]):-X
insert1(X[H | T],[H | R]):-X>H,insert1(X,T,R)。
insert1(X, [], [X]).
...
insert1(X, [H|T], [X,H|T]) :-
X < H.
?- insert1(3, [1,2,3,4], L).