为什么这个Prolog代码没有运行?

时间:2014-12-02 09:45:33

标签: recursion prolog

我编写了以下代码来替换列表中给定元素的所有匹配项,并使用另一个指定值。这是我的代码:

substitute(X, Y, [], []).
substitute(X, Y, [X|T], [Y|R]) :- substitute(X, Y, T, R).
substitute(X, Y, [H|T], [H|R]) :- H\= X, substitute(X, Y, T, R).

我试图在GNU Prolog中这样称呼它:

substitute(2, 3, [2, 2, 2], []).

导致:

no

这里有什么问题?我没有看到任何错误。我正在比较我给定列表的头部以查看它是否与X匹配。如果匹配,我在输出列表中将其替换为Y并且我在尾部进行递归。

在第二种情况下,如果头部与X不匹配,那么我在尾部递归并检查尾部的元素是否与X相同,然后递归将根据第二个定义替换它。然后在尾部的末尾,当遇到空列表时,递归移动到基本案例并终止。我不确定,为什么我无法运行此代码。请帮助。

0 个答案:

没有答案