грубо говоря, тебе дают стартовый элемент и функцию, которая для входного параметра выдаёт массив новых элементов,
каждый из них - либо Left(продолжай и запусти функцию ещё раз)
либо
Right(добавь это к результату)
tailRecM должен выполнить цепочку flatMap ов заранее неопределённой глубины и сплющить всё в один список с финальными элементами в правильном порядке