【发布时间】:2015-01-14 12:42:19
【问题描述】:
我的老师为我们提供了一些关于 Prolog 的幻灯片,我发现有些奇怪。
reverse([],[]).
reverse([X|Xs],Zs) :- reverse(Xs,Ys), append(Ys, [X], Zs).
据他说,当第一个参数reverse([],..) 是一个完整列表时,程序就会终止。
此外,如果您将谓词中的目标切换为reverse([X|Xs],Zs) :- append(Ys, [X], Zs), reverse(Xs,Ys).,则程序应在第二个参数是完整列表时终止reverse(..,[]).
这与我目前所学的有点背道而驰。我认为这两个论点都影响了程序的终止条件,显然他们没有按照我老师的例子。 谁能给我一些意见?
【问题讨论】:
标签: prolog termination failure-slice