在prolog中计算原子数

时间:2016-12-24 14:48:32

标签: prolog

我写了一个代码,它应该计算加在一起的原子数量,如: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号。有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

主要问题是ZZ总是1(它唯一被绑定的东西);这是幸运的,因为你要求两个子添加都相同。

你的第二个论点只是第一个论点的副本,没有任何意义(至少在这个问题上);同样,目前尚不清楚第三和第三的角色是什么。第四个参数是(第三个是基本情况下的计数,但第四个是递归的计数)。

清理所有这一切后,请留下:

addition(X, 1) :- atom(X).
addition(X+Y, ZZ) :-
    addition(X, Z1),
    addition(Y, Z2),
    ZZ is Z1+Z2.