我编写了以下代码来替换列表中给定元素的所有匹配项,并使用另一个指定值。这是我的代码:
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相同,然后递归将根据第二个定义替换它。然后在尾部的末尾,当遇到空列表时,递归移动到基本案例并终止。我不确定,为什么我无法运行此代码。请帮助。