Prolog程序输出

时间:2014-08-09 23:20:18

标签: prolog

我是编程的新手,我遇到了一个程序,我尝试在SWI_PROLOG上执行,无法理解输出是如何生成的。如果有人可以帮助我完成c(X,Y,Z).的评估步骤,那将会有很大帮助。该计划

a(1).
a(2).
b(a).
c(A,B,C):- a(A), d(B,C).
c(A,B,C):- b(A), d(B,C).
d(B,C):- a(B), !, a(C).
d(B,_):- b(B).

输出:

X = Y, Y = Z, Z = 1 .

1 个答案:

答案 0 :(得分:1)

? - c(X,Y,Z)。
1.调用c(X,Y,Z)// c(A,B,C):- a(A), d(B,C) 2.调用(X)//这是第一条规则 - >它因为事实a(1)而评估为1,所以X是1 3.调用d(Y,Z)//其中d(B,C):- a(B), !, a(C)
4.调用a(Y)// Y的计算结果为1,因此Y为1 5.调用a(Z)// Z求值为1,因此Z为1.

所以d(B,C)是d(1,1),我们发现a(A)是a(1)所以
c(1,1,1)=> X = 1,Y = 1,Z = 1。

如果按; ,您将能够找到更多解决方案。