Prolog 序言附加列表
我对附加列表有问题Prolog 序言附加列表,prolog,Prolog,我对附加列表有问题 find_paths(Start, Finish) :- path(Start, Finish, [Start], Path), append([Path], List, Result), fail. 路径是一个列表 我将为失败找到n条路径, 但如果我输入write(Result),它将打印这个[…],H234]n次 如何告诉prolog使用上一次迭代的结
find_paths(Start, Finish) :- path(Start, Finish, [Start], Path),
append([Path], List, Result),
fail.
路径是一个列表
我将为失败找到n条路径,
但如果我输入write(Result),它将打印这个[…],H234]n次
如何告诉prolog使用上一次迭代的结果并与
每次失败都会有一个新的路径?变量列表是免费的,因此毫不奇怪,会打印将路径([…])附加到变量(H234)上的结果。改进代码的最简单方法是
find_paths(Start, Finish, List) :-
findall(Path, path(Start, Finish, [Start], Path), List).
或者,您可以更改路径/4的定义以累积结果。请添加一些有关您获得的内容和想要的内容的信息。我想我明白了。我使用抵销,所以它以列表的形式返回所有解决方案。