Стоит ли избегать хвостовой рекурсии в Прологе и вообще?

Я работаю над онлайн-книгой "Learn Prolog now" для удовольствия.

Я пытаюсь написать предикат, который проходит через каждого члена списка и добавляет один к нему, используя аккумуляторы. Я уже сделал это легко без хвостовой рекурсии.

addone([],[]).
addone([X|Xs],[Y|Ys]) :- Y is X+1, addone(Xs,Ys).

Но я читал, что этот тип рекурсии лучше избегать по соображениям производительности. Это правда? Считается ли «хорошей практикой» всегда использовать хвостовую рекурсию? Будет ли стоить усилий использовать аккумуляторы, чтобы получить хорошую привычку?

Я попытался изменить этот пример на использование аккумуляторов, но он переворачивает список. Как я могу избежать этого?

accAddOne([X|Xs],Acc,Result) :- Xnew is X+1, accAddOne(Xs,[Xnew|Acc],Result).
accAddOne([],A,A).
addone(List,Result) :- accAddOne(List,[],Result).

Ответы на вопрос(4)

Ваш ответ на вопрос