【发布时间】:2019-02-23 00:48:57
【问题描述】:
我这几天正在学习 Prolog,需要将两个列表合并为一个遵循此规则的列表:
ListA: [], ListB: [] => ResultList: []
ListA: [], ListB:[a,b,c] => ResultList: [[a],[b],[c]]
ListA: [1,2], ListB:[a,b,c] => ResultList: [[1,2,a],[1,2,b],[1,2,c]]
我遇到了递归函数输出值问题,这是我的编码:
extend_my_path([],_,_,_).
extend_my_path([H|T],OriginalPath,OrignailMewPaths,NewPaths) :-
append(OriginalPath,[H],NewPath),
append(OrignailMewPaths,[NewPath],NewPaths1),
print("NewPaths1:"),print(NewPaths1), nl,
extend_my_path(T,OriginalPath,NewPaths1,NewPaths1).
运行它会给出以下输出,但没有 Result 变量的值:
?- extend_my_path([a,b,c],[1,2],[],Result).
"NewPaths1:"[[1,2,a]]
"NewPaths1:"[[1,2,a],[1,2,b]]
"NewPaths1:"[[1,2,a],[1,2,b],[1,2,c]]
true.
我希望得到它的价值:
Result=[[1,2,a],[1,2,b],[1,2,c]]
如果有人能指出原因,我们将不胜感激。谢谢。
【问题讨论】:
标签: prolog