Prolog递归示例

时间:2015-11-30 15:45:16

标签: prolog

我在Prolog中有这个数据库:

connection(a,b,bus).
connection(b,c,metro).
connection(b,d,taxi).
connection(d,e,bus).

如何设置规则,以便问题:trajectbetween(a,c,T).给我回答:T = b

我已经尝试过这条规则:

traject(A, B):- connection(A, X,_), traject(X,B).

但它不起作用。

1 个答案:

答案 0 :(得分:1)

问题是您没有traject/2的基本案例。如果每个案例都必须复发,谓词如何成功?

在我认为的问题中回答你的问题:

trajectbetween(A,C,X) :- connection(A,X,_), connection(X,C,_).

注意这里没有递归,所以这将产生最好的一站式解决方案。如果你想要其他解决方案,那可能还不够;你可能想尝试一下你所拥有的第二种情况。

再次请review my previous answer,因为它可能会有帮助。