Z tego, co przeczytałem: Powodem jest to, że nie jest łatwo ustalić, która metoda zostanie faktycznie wywołana, ponieważ mamy dziedziczenie.
Dlaczego jednak Java nie ma przynajmniej optymalizacji rekurencji dla metod statycznych i nie wymusza właściwego sposobu wywoływania metod statycznych za pomocą kompilatora?
Dlaczego Java nie ma żadnego wsparcia dla rekursji ogona?
Nie jestem pewien, czy w ogóle są tu jakieś trudności.
Jeśli chodzi o sugerowany duplikat , jak wyjaśniono w Jörg W Mittag 1 :
- Drugie pytanie dotyczy TCO, w tym TRE. TRE jest znacznie prostszy niż TCO.
- Także inne pytanie dotyczy tego, jakie ograniczenia JVM nakłada na implementacje językowe, które chcą się skompilować do JVM, pytanie to dotyczy Java, która jest jedynym językiem, który nie jest ograniczony przez JVM, ponieważ specyfikację JVM można zmienić przez ci sami ludzie, którzy projektują Javę.
- I na koniec, nie ma nawet ograniczeń w JVM dotyczących TRE, ponieważ JVM ma wewnętrzną metodę GOTO, która jest wszystkim, co jest potrzebne do TRE
1 Dodano formatowanie do wywołanych punktów.