Prolog,递归函数,并通过函数的参数返回值

时间:2010-11-18 02:40:05

标签: 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).

?- replace([l,r,r,l,r,r],X).

返回

X = [f, f, r, r] .

?- replace([r,l,r,r,l,r,r],X).

给出

false

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

请帮忙。


PS。我还在学英语,但有时候我犯的是愚蠢的错误。我正在尽我所能,用英语写问题和答案,但如果你在任何错误的情况下编辑我的帖子,我会很高兴。我保证,你的努力不会浪费。

1 个答案:

答案 0 :(得分:2)

你需要追加([HEAD],Y,Result)而不是追加(HEAD,Y,Result)。 HEAD不是自己的名单。