我正在尝试使用以下谓词生成所有X,Y对,这些对X,Y的总和等于给定的Z:
genN(0).
genN(X) :-
genN(Xprev),
X is Xprev + 1.
sum2(X, Y, Z) :-
X + Y =:= Z.
allSum2(X, Y, Z) :-
genN(X),
X < Z,
genN(Y),
Y < Z,
sum2(X, Y, Z).
我正在使用
genN
生成所有自然数
sum2
检查是否给定3个数字,X, Y, Z
然后是X + Y = Z
。
然后allSum2
的逻辑是
生成所有对X和Y,以使X
和Y
小于Z
和
检查它们是否总计为Z
。
不幸的是,我陷入了产生无限多个Ys
的困境,而且我不明白为什么。
有人可以向我解释吗?