Prolog 递归地将元素插入到列表中

Prolog 递归地将元素插入到列表中,prolog,Prolog,我想写一个Prolog程序,在另一个列表中插入一个列表。例如: % insert [1, 2] to [[1, 3, 4], [2, 5]] [[1, 3, 4], [2, 5], [1, 2]] 我写了以下内容: insertList([X], [], [[X]]). insertList([H|T], [H2|T2], [[H|T], H2|T2]). 但这种方法只添加一个列表,因为没有递归。在这种情况下,如何进行递归?在此代码中将元素插入列表时,我遇到了相同的问题: insert(X,

我想写一个Prolog程序,在另一个列表中插入一个列表。例如:

% insert [1, 2] to [[1, 3, 4], [2, 5]]
[[1, 3, 4], [2, 5], [1, 2]]
我写了以下内容:

insertList([X], [], [[X]]).
insertList([H|T], [H2|T2], [[H|T], H2|T2]).
但这种方法只添加一个列表,因为没有递归。在这种情况下,如何进行递归?在此代码中将元素插入列表时,我遇到了相同的问题:

insert(X, [], [X]).
insert(X, [H|T], [X,H|T]).

那么,如何对插入列表进行递归呢?插入可以在列表的开头,也可以在列表的结尾。

最好看一下下面的内容,其中第一个答案包含一个指向站点的链接,并在prolog中解释递归。这是解决上述问题的一个很好的起点。

显然,您想要的是在列表末尾插入一项。插入的项目是一个列表,这一事实在这里并没有重大区别

insertAtEnd(X,[ ],[X]).
insertAtEnd(X,[H|T],[H|Z]) :- insertAtEnd(X,T,Z).
如果您希望在开始时插入,则不需要递归!事实上,您甚至不需要谓词来执行此操作,因为Prolog术语
[X | L]
在列表L的开头“插入”了项X

也许您想到了一个更困难的问题,即以适当的方式将项目插入排序列表以保持排序顺序。然而,问题中没有多少东西表明这是你的问题