在学习 Prolog 时,我正在尝试使用累加器解决以下问题:
写一个谓词 addone2/,它的第一个参数是一个整数列表,第二个参数是通过将第一个列表中的每个整数加 1 获得的整数列表。例如,查询
addone([1,2,7,2],X).
应该给
X = [2,3,8,3].
我创建了以下代码:
addone([], _).
addone([E|Tail], [R|Rs]) :-
NewE is E+1,
append([R|Rs], [NewE], NewRs),
addone(Tail, NewRs).
但它不起作用。有人能告诉我为什么吗?那么,如何在 Prolog 中使用累加器呢?
谢谢!