我写了一个代码,它应该计算加在一起的原子数量,如:a + b + c + d(Z应该是4)。
我的代码到目前为止:
addition(X, X, 1, _) :-
atom(X).
addition(X+Y, X1+Y1, ZZ, Z) :-
addition(X, X1, ZZ, Z),
addition(Y, Y1, ZZ, Z),
Z is ZZ + 1.
我的问题是代码总是给我2号。有人知道如何解决这个问题吗?
答案 0 :(得分:1)
主要问题是ZZ
总是1(它唯一被绑定的东西);这是幸运的,因为你要求两个子添加都相同。
你的第二个论点只是第一个论点的副本,没有任何意义(至少在这个问题上);同样,目前尚不清楚第三和第三的角色是什么。第四个参数是(第三个是基本情况下的计数,但第四个是递归的计数)。
清理所有这一切后,请留下:
addition(X, 1) :- atom(X).
addition(X+Y, ZZ) :-
addition(X, Z1),
addition(Y, Z2),
ZZ is Z1+Z2.