2 Stimmen

Wie druckt Prolog 2 Listen als eine Liste aus, ohne jeglichen Append-Code?

Ich habe den folgenden Code, der offenbar die Standardmethode ist, um die Vereinigung zwischen 2 Listen anzuzeigen:

union([Head|Tail],List2,Result) :- 
    member(Head,List2),  union(Tail,List2,Result).
union([Head|Tail],List2,[Head|Result]) :- 
    \+ member(Head,List2), union(Tail,List2,Result).
union([],List2,List2).

und bei der folgenden Eingabe:

union([a,b,c,d,2,3], [b,c,3,99], Result).

liefert mir die folgende Ausgabe:

Result = [a,d,2,b,c,3,99] ? 

yes

Meine Frage ist: Wie macht Prolog das? Liste2 wird durch die rekursiven Aufrufe nie verändert, aber am Ende werden alle Elemente ausgedruckt, die die Vereinigung zwischen den 2 ursprünglichen Listen bilden.

Bitte helfen Sie mir, diesen Code zu verstehen.

Ich danke Ihnen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X