Bonjour,
Il me semblait qu'on pouvait indiquer à java d'optimiser le récursif terminal, un peu comme avec gcc.
Quelqu'un connait-il ma méthode à suivre ?
titi
Version imprimable
Bonjour,
Il me semblait qu'on pouvait indiquer à java d'optimiser le récursif terminal, un peu comme avec gcc.
Quelqu'un connait-il ma méthode à suivre ?
titi
Salut,
Pas à ma connaissance non.
Par contre, Scala, un langage qui tourne sur le JVM la supporte lui.
Bonsoir,
java supporte l'optimisation (transformation de la récursion en une boucle) des récusions terminales, mais pas au niveau du compilateur. En effet, a cause de l'héritage il est impossible de faire ça a la compilation (dans les mérhodes non privé, l'appel récursif peut passer par un enfant, le compilateur a aucune chance de déterminer ça).
Teste ce code avec différentes jvm et tu saura quoi. D'après mes lectures, la jvm de sun n'optimise pas (StakOverflow, http://bugs.sun.com/bugdatabase/view...bug_id=4726340) alors que les jvm de ibm optimisent (pas pu tester, elles sont payantes)
Code:
1
2
3
4
5
6
7
8
9
10 public class TailRecursionTest { private static int loop(int i) { return loop(i); } public static void main(String[] args) { loop(0); } }