我想从Prolog中的两个已排序列表中获取第三个排序列表。 该算法如下: 1.比较两个列表的头部 1.1如果第一个小于或等于第二个,则将其插入到第三个列表中,然后将其从第一个列表中删除。 1.2 else,将第二个列表的头插入第三个列表中,并将其从第二个列表中移除。 2.重复这些步骤,直到一个列表为空。Prolog - 从两个已排序的列表中创建第三个排序列表
从理论上讲,这应该可以工作,但有一些我错过了。
这里是我的代码:
insSort([],[],[]).
insSort([],L,L).
insSort(L,[],L).
insSort([H1 | T1],[H2 | T2],L) :- H1 =< H2,
append([H1],[],L1),
insSort(T1,[H2 | T2],L1),L=L1,!.
insSort([H1 | T1],[H2 | T2],L) :- append([H2],[],L1),
insSort(T2,[H1 | T1],L1),L=L1.
您使用当前代码得到的结果是什么? – Osiris76 2011-05-21 12:41:14
@Osiris,我得到的结果是'false'。 – svick 2011-05-21 12:51:42
你知道吗,如何获得'真实'? – 32cupo 2016-05-22 17:40:53