使用递归在prolog中附加

时间:2010-03-28 22:52:06

标签: recursion prolog append

假设我想通过逐个附加另一个列表(L)的元素来构建列表(L2)。结果应与输入完全相同。 这个任务很愚蠢,但它会帮助我理解如何通过列表递归并删除某些元素。

我已将以下代码放在一起:

create(L, L2) :- (\+ (L == []) -> L=[H|T], append([H], create(T, L2), L2);[]).

通过

调用它
create([1,2,3,4], L2)

返回

L2 = [1|create([2,3,4], **)\.

这不是理想的结果。

1 个答案:

答案 0 :(得分:3)

你说你想了解prolog是如何工作的,所以我不会给你一个完整的解决方案,只是一个提示。

prolog中的函数不返回值,它们只是创建绑定。

当你说

append([H], create(T, L2), L2);[]).

您正在尝试使用返回值。

尝试附加在递归调用中使用的创建绑定。