假设我想通过逐个附加另一个列表(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], **)\.
这不是理想的结果。
答案 0 :(得分:3)
你说你想了解prolog是如何工作的,所以我不会给你一个完整的解决方案,只是一个提示。
prolog中的函数不返回值,它们只是创建绑定。
当你说
时append([H], create(T, L2), L2);[]).
您正在尝试使用返回值。
尝试附加在递归调用中使用的创建绑定。