Да, на recur можно перевести не все. Для этого же есть еще trampoline. Разве нет? Для mutial recursion.
ну тоже не совсем. как минимум это убивает производительнось, требует изменения кода, понимание заранее, что где именно может случиться значительный тейл колл