gpt4 book ai didi

logic - 序言,复制列表

转载 作者:行者123 更新时间:2023-12-04 23:33:22 25 4
gpt4 key购买 nike

我试图让我的 ARM 围绕一些基本的序言,但在这个过程中有点挣扎。具体来说 - 我试图通过一个项目列表并将其逐项复制到一个新列表中。我可以让它反转,但我发现在不反转的情况下这样做会更棘手。

我一直在尝试以下 -

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 的完整副本.

关于logic - 序言,复制列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1911758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com