Несколько мыслей.
1) Существуют языки программирования в которых рекурсия вообще заменяет цикл (Haskell, Erlang) и другого способа описать итерацию кроме как через рекурсивную функцию - нету. Но наверное в топике тема рекурсии - не основная - а просто частный пример.
2) Во всех случаях всегда надо выбирать "читабельность". Прошли времена когда программисты отдавали дань ассемблеру или указателям на сырую память. Сегодня так пишут все меньше и меньше. И основная задача написания кода - сделать его понятным для вашего коллеги. Цитата : "Код пишется человеком для прочтения человека и лишь в очень редких случаях - для машины".
Вобщем пишите код. Просите коллег чтоб они его посмотрели и ПОНЯЛИ что вы имели в виду. И если коллеги будут кричать WTF! - фиксируйте их замечания и доводите до такого состояния чтобы ни у кого не было вопросов.
Это будет идеальный код по Роберту Мартину.