Question: Incapable de programmer dans maple ( Probleme de maths)

Bonjour,

            voici un probleme que je suis incapable de regler!

-----------------------------------------

Développer un algorithme récursif de fouille dichotomique et l'utiliser pour trouver, dans la liste suivante:   L = { 1, 2, 4, 5, 6, 9, 11, 16},

                       i)  la position de x = 4.

                       ii)  la position de x = 3 .

                       iii) la position de x = 9.


Indices pour trouver l'algorithme:
 On devrait avoir à définir un compteur donnant la position de x (si x est dans la liste).  Ma fonction ZeFouilleDicho contient trois arguments:

L = la liste,    x = le nombre cherché et pos =  donnant la position dans la liste de x.   

À l'étape de base, pos vaut 1.   Ainsi,  l'appel de ma fonction ZeFouilleDicho pour la liste à traiter est

pour x = 4,     ZeFouilleDicho( L, 4, 1);


 On peut s'inspirer un peu du pseudocode donné dans les notes de cours. (Module 5.1)   Toutefois, ce dernier n'est pas un algorithme récursif.    

Mon algorithme contient 3 tests if  dont le premier contient les deux seconds.  J'utilise 2 récursivités ( 2 appels à ZeFouilleDicho)  selon que l'on ait séparé la liste en prenant les nombres de droites ou selon qu'on ait pris les nombres de gauche.

L'incrémentation de la position (3e argument) ne se fait, dans mon algorithme, que lorsque l'on prend les nombres de droite.  J'ai eu beaucoup de difficulté à trouver et incrémenter la position !

Le second test if imbriqué  (donc le 3e dans l'écrit de l'algorithme) met fin à la fonction et retourne la position si x a été trouvé ou retourne un message d'erreur sinon.

Notez aussi que j'utilise la première personne... c'est UN algorithme, il en existe sans doute d'autres qui sont beaucoup plus joli.

---------------------------

 

Si quelqu'un en etait capable, ce serait tres apprecie!

Please Wait...