Рекурсивные определения функций оправдано там, где встречается естественная рекурсия в структурах данных или процессах.
Реализация итеративных процессов в виде древовидной рекурсии приводит к потере эффективности.
Чисто рекурсивная реализация иногда менее наглядна. На практике требуются не возвращаемые значения, а побочные эффекты.
Поэтому концевую рекурсию по хвосту списка стоит превратить в цикл, но сохранить рекурсию в отношении головы списка. Такое решение подчёркивает интерпретацию списка как упорядоченной последовательности, к каждому элементу которой рекурсивно применяется некоторое действие.