我创建了一个通过迷宫找到路径的谓词,这个谓词使用递归和五个参数,其中一个是返回找到的路径的列表,一切正常,找到正确的路径但是当返回一个列表,随之返回一个Prolog内部变量。
?- maze(X).
X = [start,x,z,s,r,p,q,l,m,w,d,r,l,s,a,t,c,i,d,b,j,k,g|_G2612] .
第一个节点是'start',最后一个节点是'g'。
示例代码:
maze(X) :-
path(start,colour,g,[],X).
path(From, Colour, To, Visited, [From,To|_]) :-
connect(From, Colour, To).
path(From, Colour, To, Visited, [From|Route]) :-
connect(From, Colour, By),
path(By, Colour2, To, Visited2,Route).
我删除了谓词中不影响问题的步骤,因为这是一个必须使用其他变量找到路径的赋值。