Существует две возможные причины, по которым это не работает (ни одна из которых не относится к рекурсивным функциям).
Если предполагается, что это точка входа в программу, то проблема в том, что Eclipse не настроениспользовать TailRec
в качестве точки входа.Если вы не получаете предупреждение от Eclipse, то, вероятно, у вас есть другая точка входа, которая используется по умолчанию (например, object Main extends App
).Вам необходимо настроить Eclipse для использования TailRec
в качестве объекта точки входа.
Если это объект в приложении с другой точкой входа, то проблема в том, что он расширяет App
, что делаетстранные вещи в способе инициализации объекта.Удалите этот суперкласс и вызовите anotherFactorial
, и он должен выполнить ваш оператор println
.(Вам необходимо вызвать метод или проверить значение в объекте для его инициализации)
В обоих случаях вы можете проверить это с помощью простого println
в object
, потому что рекурсивныйфункция факториала не актуальна (и работает отлично!)