В обычном случае вы сталкиваетесь с двумя критериями, которые помогают с вашим решением:
- Время выполнения
- читаемость
Рекурсивный код обычно медленнее, но гораздо более читабелен (не всегда, но чаще всего. Как уже было сказано, хвостовая рекурсия может помочь, если ваш язык ее поддерживает - если нет, то вы мало что можете сделать).
Итеративная версия рекурсивной проблемы обычно быстрее с точки зрения времени выполнения, но код сложен для понимания и, следовательно, хрупок.
Если обе версии имеют одинаковое время выполнения и одинаковую читаемость, нет причин выбирать одну из них. В этом случае вам нужно проверить другие вещи: изменится ли этот код? Как насчет обслуживания? Вы довольны рекурсивными алгоритмами или вам снятся кошмары?