首页 > 解决方案 > 如何定义此谓词以使其不会永远运行

问题描述

我需要定义一个谓词:

?- X = succ(X), nu(X).
false.

我该怎么做?似乎它不会返回任何东西,只会永远运行。

标签: prolog

解决方案


你可以这样尝试:

nu(0).
nu(S) :-
    acyclic_term(S),
    S = succ(X),
    nu(X).

acyclic_term/1 调用是第一次查询失败所必需的。


推荐阅读