为什么我的函数返回负值?
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
.
所以我在序言中画了一个简单的函数来计算矩阵中有多少个变量。
事情是这样的:
:-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
.