next up previous contents index
suivant: Version récursive avec les monter: Identité de Bézout par précédent: Version itérative avec les   Table des matières   Index


Version récursive sans les listes

Si on utilise des variables globales pour A, B, D, U, V, T, on peut voir la fonction Bezout comme calculant à partir de A B, des valeurs qu'elle met dans U, V, D (AU+BV=D), grâce à une variable locale Q.
On écrit donc une fonction sans paramètre : seule la variable Q doit être locale à la foncton alors que les autres variables A, B ... sont globales.
Bezout fabrique U, V, D vérifiant A*U+B*V=D à partir de A et B. Avant l'appel récursif (on présérve E(A/B)=Q et on met A et B à jour ( nouvelles valeurs), après l'appel les variables U, V, D vérifient A*U+B*V=D (avec A et B les nouvelles valeurs), il suffit alors de revenir aux premières valeurs de A et B en écrivant :
B*U+(A-B*Q)*V=A*V+B*(U-V*Q)
On écrit alors :
fonction Bezout
local Q 
Si B != 0 faire
E(A/B)->Q
A-B*Q->R
B->A
R->B
Bezout
U-V*Q->W
V->U
W->V
sinon 
1->U
0->V
A->D
fsi
ffonction


Documentation de giac écrite par Renée De Graeve