问题停止,这是创建一个replace/4
谓词想x
与其他元素(Y
)代替从第一列表中的某个元素(X
),最后保存它进入最后一个参数,一个新的列表。我知道我的基本情况(?)显然有些问题,但我似乎无法弄清楚。当我跟踪这段代码时,它开始正常,但在第一个列表为空之后,它开始添加匿名变量。请怜悯我是Prolog的新手。我不知道如何从进入一个循环
replace([], _, _, []).
replace([H|T], X, Y, N):-
H = X,
append(N, [Y], NL),
replace(T, X, Y, NL).
replace([H|T], X, Y, N):-
H \= X,
append(N, [H], NL),
replace(T, X, Y, NL).
你追加了错误的方式...这应该是'追加(NL ,[Y],N)'和append(NL,[H],N)'。但那仍然是低效的,而且你根本不需要“附加/ 3”。 –
我想出了确实可以做到这一切的有效方法。但我似乎无法想到一个有效的方法。 – Boomer
我将它改为'append([Y],NL,N)'和append([H],NL,N)'。它现在可以工作,但我仍然想知道更有效的方式是什么。 – Boomer