【发布时间】:2016-02-28 05:33:36
【问题描述】:
我刚刚弄清楚如何运行 gprolog,prolog 的新问题让我很困惑。问题是指prolog中的二叉搜索树,假设
8
/ \
3 10
/ \
1 6
这里有两种类型的事实,当 X 是 Y 的左叶时 left(X,Y) 和当 X 是 Y 的右叶时 right(X,Y),所以我可以说 left(3,8)和左(1,3)和右(10,8)作为我的事实。当 X 在事实方面高于 Y 时,是否执行上述规则(X,Y)?所以我在想的是,当 Y 是 X 的左叶或 Y 是 X 的右叶时,X 在 Y 之上。
我尝试了规则
above(X,Y) :- left(Y,X); right(Y,X).
当我在 gprolog 中运行上面的查询 (3,1) 时。它问我真的吗?当我按下回车并返回是时,当我按下“;”它返回 no,因为系统一直在搜索第二个目标“right(1,3)”。 我只是在徘徊,无论我按回车还是分号,有没有可能返回yes?
【问题讨论】:
标签: prolog logic logical-operators