Ich habe ein Problem mit der Berechnung der Vorkommen der angegebenen Nummer in der Liste. Zum Beispiel, wenn wir eine Liste wie L = [4,5,6,4,3,4,2,4,5,6,7,4]
haben und ich möchte zählen, wie viele 4
s ist in der Liste, dann ist die Antwort 5
.Zählnummern in der Liste
Ich habe versucht, dies in Prolog zu implementieren, aber gprolog
zeigt mir nur no
als Antwort:
count_occ([], 0).
count_occ([H|T], L) :- count_occ(T, N), H =:= 4, L is N + 1.
Und ich weiß nicht, warum.
Überlegen Sie, was passiert, wenn 'H' nicht 4. – Alexander
@Alexander ist: Ich änderte die zweite Zeile zu 'count_oss ([H | T], L): - count_occ (T, N), (H =: = 4, L ist N + 1), (H = \ = 4, L ist N + 0) .' und keine Erfolge. – mirx
Das bedeutet, dass H ist gleich 4, ** und ** nicht gleich 4, was eindeutig ein Widerspruch ist. Ich denke, du musst 3 Prädikate haben. Das Basisprädikat, eins für wenn H 4 ist, und eins für wenn H nicht 4 – Alexander