我有附加列表的问题。
find_paths(Start, Finish) :- path(Start, Finish, [Start], Path),
append([Path], List, Result),
fail.
路径是一个列表。
我将获得n个失败的路径, 但如果我把写(结果),它将打印[[...],H234] n次。
如何告诉prolog使用上一次迭代的结果并与之一起追加 每次失败的新途径?
答案 0 :(得分:2)
变量List是免费的,因此不出所料地打印了将路径([...])附加到变量(H234)的结果。改进代码的最简单方法是
find_paths(Start, Finish, List) :-
findall(Path, path(Start, Finish, [Start], Path), List).
或者,您可以更改path / 4的定义以累积结果。