我试图掌握一些基本的序言,但在这个过程中有点挣扎。具体来说 - 我正在尝试遍历项目列表并将其逐项复制到新列表中。我可以让它反转,但我发现不反转会更棘手。
我一直在尝试以下操作 -
copy(L,R) :- accCp(L,R).
accCp([],R).
accCp([H|T],R) :- accCp(T,H).
当我对此进行跟踪时 - 我可以看到单个项目被复制,但它们“丢失”了,并且没有形成一个不断增长的列表(在 R 中,正如我所希望的那样)。我怎样才能做到这一点?
非常感谢
当原始列表为空时,您的基本情况需要将副本列表设置为空。然后,递归情况需要采取H
从列表中L
并将其添加到列表的头部R
:
copy(L,R) :- accCp(L,R).
accCp([],[]).
accCp([H|T1],[H|T2]) :- accCp(T1,T2).
你打电话时copy
,它会一直运行到基本情况,在那里设置R
到一个空列表。然后,当它恢复工作时,它会不断附加头部H
已知名单中的[H|T1]
到变量列表的开头[H|T2]
。这样做直到达到原始情况,此时R
包含完整副本L
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)