問題停止,這是創建一個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