我正在基于一个here来探讨一个Prolog问题。
这个问题本质上是在询问如何在列表末尾添加元素。我想更进一步,请问如何增加元素X的次数。我在写代码,有点迷路。这是我所拥有的:
add_tail([],X, 0, [X]).
add_tail([H|T],X, C, [H|T2]):- NewC is C - 1, add_tail(T,X, NewC, T2).
我正在测试:add_tail([1,2,3,4,5,6], 4, 2, X)
,但是,根据放置新计数(C)的位置,我得到一个错误。
任何意见和建议将不胜感激!
如果您要在列表的末尾添加两个额外的4
,那么这就是您所需要的:
add_tail([], _, 0, []).
add_tail([], X, C, [X|T2]) :- C > 0, C2 is C - 1, add_tail([], X, C2, T2).
add_tail([H|T], X, C, [H|T2]):- add_tail(T, X, C, T2).
现在调用?- add_tail([1,2,3,4,5,6], 4, 2, X).
将[1, 2, 3, 4, 5, 6, 4, 4]
与X
统一。