Changes between Version 3 and Version 4 of 2010CaoTme3


Ignore:
Timestamp:
Mar 20, 2010, 4:39:29 PM (15 years ago)
Author:
jpc
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2010CaoTme3

    v3 v4  
    153153
    154154
     155Les méthodes {{{litterals()}}}, {{{support()}}}, {{{display()}}} et {{{parse()}}} de la
     156classe {{{Ebm}}} sont récursives. On définit le niveau de profondeur de l'arbre d'une
     157{{{EBM}}} comme le nombre d'arcs {{{N}}} nécessaire pour atteindre la racine. Dans
     158l'{{{EBM}}} {{{e4}}}, la racine {{{e4}}} à une profondeur nulle, {{{e1}}} une profondeur
     159de 1 et {{{a}}} une profondeur de 2.
     160
     161'''Récursion'''
     162
     163Considérons l'exemple de la fonction {{{litterals()}}}. Dire qu'elle est récursive
     164signifie que son calcul au niveau de profondeur {{{N}}} peut se décomposer en
     165calculs ''de cette même fonction'' appliquée sur le niveau {{{N+1}}}.
     166Par exemple, le calcul de {{{litterals()}}} de {{{e4}}} peut s'exprimer comme
     167la somme des fonctions {{{litterals()}}} ''appliquée à ses opérandes''
     168({{{e0}}}, {{{e1}}}, {{{e2}}} et {{{e3}}}) :
     169
     170'''Condition d'arrêt'''
     171
     172On comprend bien, que l'on ne va pas rappeler indéfiniment {{{litterals()}}},
     173à une profondeur donnée, il faudra bien d'arrêter. Le critère d'arrêt est simple:
     174lorsque l'on atteind une {{{EbmVar}}}, le noeud n'a pas d'opérandes, et son
     175nombre de littéraux vaut 1.
     176
     177En conclusion, la fonction récursive aura la structure générale suivante:
     178
    155179[[Image(Ebm-1.png)]]
    156180[[Image(Ebm-2.png)]]