Bonjour Nasix,
Quote:
Mon algorithme est très simple :
La première chose à faire est malgré tout de t'assurer, d'être certain que le calcul termine.
Sinon, si le calcule termine, ça va peut-être être difficile, je crois que la JVM est incapable d'optimisation de type "tail recursion"
Essaie quand même de réécrire des bouts de code dans cet esprit. A supposer une fonction factorielle classique
return valeur * fact_rec(valeur - 1);
récrire comme ça, avec un accumulteur
int fact_rec_term(int valeur, int accu)
{
if(valeur == 1)
return accu;
return fact_rec_term(valeur-1, valeur*accu);
}
pour avoir un appel récursif terminal. c'est une technique classique en C/C++, mais je ne sais pas si la JVM saura en tirer partie. Au niveau du byte-code je ne pense pas, mais dans le JIT c'est possible. faut essayer
Bonjour Nasix,
La première chose à faire est malgré tout de t'assurer, d'être certain que le calcul termine.
Sinon, si le calcule termine, ça va peut-être être difficile, je crois que la JVM est incapable d'optimisation de type "tail recursion"
Essaie quand même de réécrire des bouts de code dans cet esprit. A supposer une fonction factorielle classique
return valeur * fact_rec(valeur - 1);
récrire comme ça, avec un accumulteur
pour avoir un appel récursif terminal. c'est une technique classique en C/C++, mais je ne sais pas si la JVM saura en tirer partie. Au niveau du byte-code je ne pense pas, mais dans le JIT c'est possible. faut essayer