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

Fonction récursive d'Ackermann      »  Autres cas récursifs dans ChronoMath 
     »
Notion de fonction récursive , fonction de Sudan

Dans sa version de N2 dans N, la fonction d'Ackermann est la fonction récursive définie par :

Programmation JavaScript récursif de la fonction :
 

<SCRIPT LANGUAGE=JavaScript>
function acker()
{
m=3
m=eval(prompt("A(m,n), donnez m : ",m))
n=2
n=eval(prompt("A(m,n), donnez n : ",n))
alert("A("+m+" , "+n+") = "+A(m,n))
}

function A(m,n)
{
if (m!=0 && n!=0)
{return A(m-1,A(m,n-1))}
else
{
if (m==0) {return n+1}
if (n==0) {return A(m-1,1)}
}
}
</SCRIPT>



    Le programme ne contrôle pas les entrées qui devront être entières ! La structure récursive de la fonction A(m,n) présente une programmation identique à sa définition mathématique. C'est là l'élégance et la concision des définitions récursives comme celle, plus simple, du PGCD.

 !  le programme sature très vite  !
C'est le problème général des programmes récursifs devant "empiler" en mémoire les résultats intermédiaires.
Un micro-ordinateur, quoique doté d'un compilateur JavaScript relativement puissant, n'est pas "vraiment" adapté à ce type de calcul doublement récursif.

 !   
A(4,1)
  est déjà problématique !!!

    Pour en savoir plus :


© Serge Mehl - www.chronomath.com