编写Prolog递归规则count3(L, P, Z, N)
L
是一个整数列表,P
是L
中的正数,Z
是L
中的零个数; N
是L
中的负数。
count3(L, P, Z, N) :-
count3(L, O, O, O, P, Z, N).
count3([], P, Z, N, P, Z, N).
count3( [X|L], A, B, C, P, Z, N) :-
tick(X,A,B,C,A1,B1,C1),
count3(L,A1,B1,C1,P,Z,N).
tick(X, P, Z, N, P1, Z, N) :- % positive
X > 0,
P1 is P+1.
tick(Z, P, Z, N, P, Z, N1) :- % negative
X < 0,
N1 is N+1.
tick(X, P, Z, N, P, Z1, N) :- % zero is unsigned
X == 0,
Z1 is Z+1.
获得警告:单例变量[X]表示tick / 7和 致命错误:算术表达式中的未绑定变量。任何帮助表示赞赏。