In prolog verwenden Sie die is Betreiber, wenn Sie auswerten wollen arithmetische Ausdrücke. Da verwenden Sie den + symbol außerhalb eines arithmetischen Bereich ist es nicht speziell interpretiert. Dies scheint zu sein, Hausaufgaben machen, also gebe ich ein Vereinfachtes Beispiel:
add(A, B, C) :- C is A + B.
Den code oben fügt A und B und speichert das Ergebnis in C.
ungerade([],0]. ungerade([Z],Z). ungerade([X,Y|T], Summe):- Summe 1 ist Summe + X, ungerade(T,Summe 1 ). Ist das richtig, aber ich habe Fehler wird das Programm auszuführen.
Was Sie konstruieren, wenn Sie schreiben
Sum+1
ist ein term mit Funktor'+'/2
und ArgumenteSum
und1
.Im Prolog, wenn Sie berechnen möchten, eine Summe, die Sie brauchen, um das Prädikat
is/2
.In Ihrem code, Sie sollten auch Schnitte zum entfernen überflüssiger choicepoints, und fügen Sie
X
den rest der Summe, nicht1
:Verwendung eines Akkumulators würde Ihnen erlauben, um die code-tail-recursive...
Sum
parameter in der Dritten Klausel. Vielen Dank für die Mitteilung von mir. Ich bearbeitete die Antwort.In prolog verwenden Sie die
is
Betreiber, wenn Sie auswerten wollen arithmetische Ausdrücke. Da verwenden Sie den+
symbol außerhalb eines arithmetischen Bereich ist es nicht speziell interpretiert. Dies scheint zu sein, Hausaufgaben machen, also gebe ich ein Vereinfachtes Beispiel:Den code oben fügt
A
undB
und speichert das Ergebnis inC
.Erhalten eine Liste mit den ungeraden Elemente, dann die Summe, die Liste: