З того, що я прочитав: Причина полягає в тому, що не просто визначити, який метод насправді буде називатися так, як ми маємо спадщину.
Однак чому Java принаймні не має оптимізацію хвостових рекурсій для статичних методів і не застосовує належний спосіб викликати статичні методи за допомогою компілятора?
Чому Java взагалі не має підтримки для рекурсії хвоста?
Я не впевнений, чи є тут взагалі якісь труднощі.
Щодо запропонованого дубліката , як пояснив Йорг W Міттаг 1 :
- Інше питання задається про TCO, це про TRE. TRE набагато простіше, ніж TCO.
- Крім того, інше питання задає питання про обмеження, які JVM накладає на мовні реалізації, які бажають компілювати до JVM, це питання задає Java, яка є однією мовою, яка не обмежена JVM, оскільки специфікацію JVM можна змінити ті ж люди, які розробляють Java.
- І, нарешті, у JVM немає навіть обмежень щодо TRE, тому що в JVM є внутрішній метод GOTO, який є усім необхідним для TRE
1 Додано форматування для виклику очок.