Компилятор выдаёт сабжевое сообщение. Он в чём-то прав, а именно: в данном случае рекурсивный вызов *может быть совершён*, а может и не быть. Логика работы функции такова, что гарантируется, что никаких рекурсий быть не может. Нет, всё не так. НА самом деле функций две и каждая *может* (но не факт что будет) вызывать другую. Логика работы программы не позволяет повторный вызов любой из функций. Но компилятор этого не знает и выдаёт ошибку.
Вопрос: как бы заткнуть это сообщение об ошибке? Генерируемый код меня вполне устраивает. Работать будет.