我想创建一个谓词insert(X,L1,L2)
,这样当我将X
插入列表L1
时,它会返回L2
的结果。 L1
已按升序排列。
例如:
?-insert(3,[1,4,9],X).
X=[1,3,4,9]
Yes
答案 0 :(得分:0)
刀片(元素,列表NewList)
insert(X ,[],[X]).
%如果List为空,请在NewList中添加Element。
insert(X,[Y|Rest],[X,Y|Rest]):-X@Y,!.
%如果Element小于List的头部(Y),则将元素(X)添加到NewList的头部,然后添加List的尾部
insert(X,[Y|Rest0],[Y|Rest]):-insert(X,Rest0,Rest).
%如果Element(X)不小于List的Head(Y),则将Head(Y)添加到NewList并且 %再次递归