如何创建在List 1中插入数字并在List 2中返回结果的参数

时间:2014-01-19 20:07:20

标签: list numbers prolog

我想创建一个谓词insert(X,L1,L2),这样当我将X插入列表L1时,它会返回L2的结果。 L1已按升序排列。

例如:

?-insert(3,[1,4,9],X).

X=[1,3,4,9]
Yes

1 个答案:

答案 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并且 %再次递归