ChronoMath, une chronologie des MATHÉMATIQUES
à l'usage des professeurs de mathématiques, des étudiants et des élèves des lycées & collèges

Nombres de Lucas             » programme JavaScript on line : itératif , récursif

Dans l'étude d'équations diophantiennes, Lucas fit intervenir la suite qui porte son nom et dont la récurrence est la même que celle de Fibonacci. Seules changent les valeurs initiales :

un+2 = un + un+1 avec la condition u1 = 1 et u2 = 3

Dans l'étude de la suite de Fibonacci, nous avons utilisé la feuille de calcul (Tableur). Ici, nous procédons au moyen de deux petits programmes JavaScript : l'un itératif (boucle), l'autre récursif. En termes d'efficacité, une méthode récursive est cependant à proscrire du fait de la récurrence double engendrant de nombreux appels récursifs coûteux en temps de calcul et surtout en mémoire vive (RAM) par saturation de la pile du processeur utilisé.

 !   On se convaincra de cette remarque en comparant les temps de calcul pour n = 30. Quant à n = 40, le résultat est immédiat dans le cas itératif et beaucoup (beaucoup, beaucoup...) plus attendu en version récursive...

<SCRIPT LANGUAGE=JavaScript>
function go_iter()
{
n="10"; n=eval(prompt("Donnez n :",n))
L=lucas(n); alert("Lucas("+n+") = "+L)
}

function lucas(n)
{
L0=1 ; L1=3
if (n< 2) {luc=1+2*(n=1)} else
{for(i=2;i<=n;i++) {luc=L0+L1;L0=L1;L1=luc}}
return luc
}
</SCRIPT>
 

Programmation JavaScript itérative de la méthode

»  fonctions mathématiques usuelles



  • Astuce : en JavaScript, une proposition fausse est évaluée 0 et une proposition vraie vaut logiquement 1. Ainsi, lorsque n = 1, luc vaudra 1 + 2*1 = 3 car (n=1) vaut 1 !


<SCRIPT LANGUAGE=JavaScript>

function go()
{
n="10"; n=eval(prompt("Donnez n :",n))
L=lucas(n); alert("Lucas("+n+") = "+L)
}

function lucas(n)
{
if (n< 2) {if(n==0) {luc=1} else {luc=3}}
else
{luc=lucas(n-1)+lucas(n-2)}
return luc
}
</SCRIPT>
 

Programmation JavaScript récursive de la méthode

»  fonctions mathématiques usuelles




© Serge Mehl - www.chronomath.com