De 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 al menos no tiene una optimización de recursión de cola para métodos estáticos y aplica la forma adecuada de llamar a métodos estáticos con el compilador?
¿Por qué Java no tiene ningún soporte para la recursividad de cola?
No estoy seguro si hay alguna dificultad aquí.
Con respecto al duplicado sugerido , como lo explica Jörg W Mittag 1 :
- La otra pregunta es sobre TCO, esta sobre TRE. TRE es mucho más simple que TCO.
- Además, la otra pregunta se refiere a qué limitaciones impone la JVM a las implementaciones de lenguaje que desean compilar a la JVM, esta pregunta se refiere a Java, que es el único idioma que no está restringido por la JVM, ya que la especificación de la JVM puede ser modificada 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 GOTO intramétodo, que es todo lo que se necesita para TRE
1 Formato agregado para llamar los puntos realizados.