为什么我的函数返回负值?

Why is my function returning a negative value?

所以我在序言中画了一个简单的函数来计算矩阵中有多少个变量。

事情是这样的:

:-use_module(library(lists)).
:-use_module(library(clpfd)).

countOccurrences([],Y,0).
countOccurrences([X|T], Y, Z):-
    countOccur(X, Y, N),
    Acc #=N + Z,
    countOccurrences(T, Y, Acc).    


countOccur([],X,0).
countOccur([X|T],X,Y):- countOccur(T,X,Z), Y is 1+Z.
countOccur([X1|T],X,Z):- X1\=X,countOccur(T,X,Z).

countOccur 似乎工作正常并且 returns 正确的值。问题是 countOccurences 返回正确的绝对值但为负数。我只是不明白为什么会这样。

谁能教教我?

寻找 a[[a,a,a,a]] 的输入在 [] 中执行 a 的计数并设置 Acc = 0,然后设置 a 的计数发生在 [a,a,a,a] 中设置 N=4 然后 Acc #= N + Z 变成 0 #= 4 + Z 所以结果必须是 Z = -4.