Prolog、递归函数和通过函数参数返回值

Prolog、递归函数和通过函数参数返回值,prolog,return-value,Prolog,Return Value,问题很简单。。。为什么这不起作用 replace([l|[r|[r|[l|R]]]], Result) :- append([f,f],R,Result). replace([HEAD|TAIL], Result) :- replace(TAIL, Y), append(HEAD,Y,Result). ?-替换([l,r,r,l,r,r],X)。 返回 X=[f,f,r,r]。 但是 ?-替换([r,l,r,r,l,r,r],X)。 给予 false 为什么不X=[r,f,f,r,r]。 请

问题很简单。。。为什么这不起作用

replace([l|[r|[r|[l|R]]]], Result) :- append([f,f],R,Result).

replace([HEAD|TAIL], Result) :- replace(TAIL, Y), append(HEAD,Y,Result).
?-替换([l,r,r,l,r,r],X)。

返回

X=[f,f,r,r]。

但是

?-替换([r,l,r,r,l,r,r],X)。

给予

false

为什么不
X=[r,f,f,r,r]。

请帮忙


我还在学英语,但有时我会犯愚蠢的错误。我正在尽我所能,用英语写问题和答案,但是如果你能编辑我的帖子以防出现任何错误,我将非常高兴。我保证,你的努力不会白费。

你需要追加([HEAD],Y,Result)而不是追加(HEAD,Y,Result)。HEAD不是oitself的列表