Por lo que he leído: la razón es porque no es fácil determinar qué método se llamará realmente ya que tenemos herencia.
Sin embargo, ¿por qué Java no tiene al menos optimización de recursión de cola para métodos estáticos y no hace cumplir la forma correcta de llamar métodos estáticos con el compilador?
¿Por qué Java no tiene soporte alguno para la recursión de la cola?
No estoy seguro de que exista alguna dificultad aquí.
Con respecto al duplicado sugerido , como se explica en Jörg W Mittag 1 :
- La otra pregunta se refiere a TCO, esta a TRE. TRE es mucho más simple que TCO.
- Además, la otra pregunta pregunta qué limitaciones impone la JVM a las implementaciones de lenguaje que desean compilar en la JVM, esta pregunta se refiere a Java, que es el único lenguaje que no está restringido por la JVM, ya que la especificación de JVM puede Será cambiado por las mismas personas que diseñan Java.
- Y, por último, ni siquiera hay una restricción en la JVM sobre TRE, porque la JVM tiene un GOTO intra-método, que es todo lo que se necesita para TRE
1 Formato agregado para llamar los puntos creados.