Bonjour à tous.

Alors sous maple, le but est de trouver la k-ieme plus grande valeur du tableau. Pour ce faire on me demande de le faire par partition.
voici ce que j'ai fait.
Code:
partition := proc (g, d) 
local i, v, l; 
global a, n;
v := a[g]; l := g; 
     for i from g to d do 
          if v < a[i] then echange(i, l+1); l := l+1;
          fi;
     od:
 echange(g, l);
l;
 end
ça, normalement, ça met le 1er élément à sa bonne place (c'est le seul élément trié après) et tout les plus grand que lui se trouve à droite dans le tableau et les plus petits à sa gauche.

ensuite, pour trouver la kieme :

Code:
kMeilleurVente := proc (k, b, c) 
local h;
global a, n;
 h := partition(b, c); 
     if h = k-1 then h 
     elif k-1 < h then kMeilleurVente(k, b, h) 
     else kMeilleurVente(k, h, c) 
     fi;
a[k] 
end:
et normalement ça trouve la kieme meilleur.

Seulement ça marche une fois sur 10 ... le reste du temps, j'ai le droit à un jolie message rose me disant qu'il y à trop de récursivité. Mais j'arrive pas à voir où est ma faute.
Si quelqu'un pouvai m'aider.

merci d'avance.