prolog, kopieren-Listen
im Versuch, meine Arme um einige grundlegende prolog aber kämpfen ein bisschen. in bestimmten - im-versucht haben durch eine Liste von Elementen und kopieren, Element für Element in eine neue Liste. Kann ich es auf der Rückseite, sondern im finden es tricker, es zu tun, ohne Umkehr.
Habe ich versucht die folgenden -
copy(L,R) :- accCp(L,R).
accCp([],R).
accCp([H|T],R) :- accCp(T,H).
Wenn ich eine Spur auf dieses - ich kann sehen, dass die einzelnen Elemente, die kopiert werden, über, aber Sie erhalten 'lost', und keine form einer wachsenden Liste (bei R, wie ich gehofft hatte). Wie könnte ich achivie das?
Vielen Dank
- Wollen Sie das gleiche Verhalten wie copy_term/2 hat?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Basis Fall noch die Kopie-Liste zu leeren, wenn die ursprüngliche Liste leer ist. Dann den rekursiven Fall muss
H
aus der ListeL
und fügen Sie es dem Kopf der ListeR
:Beim Aufruf
copy
, es arbeitet sich seinen Weg nach unten zu der Basis-Fall, wo es setztR
um eine leere Liste. Dann, als es funktioniert wieder, es hält Sie, den KopfH
von bekannten Liste[H|T1]
an den Anfang der Variablen-Liste[H|T2]
. Er tut das, bis der ursprüngliche Fall erreicht ist, an welcher StelleR
enthält eine vollständige Kopie derL
.