Bonjour à tous,
J'ai l'intention de réalisé une multiplication de très grands nombres. Pour cela j'aimerai utilisé l'algorithme de Karatsuba.
Le problème est que cet algo se réalise uniquement grâce à la récursivité (enfin je ne vois pas comment faire sinon) et que j'ai bcp de mal en récursif.
Voila mes idées :
Comme on peut le voir, je suis très mauvais en récursif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Karatsuba (a, b) { t <- max(taille(a),taille(b)) // On prend la taille max entre les 2 B <- 10^(t/2) a1 = a / B // on garde la 1ère partie b1 = b / B a2 = a % B // On garde la 2ème partie b2 = b % B si (taille(a) >= 2) // Condition d'arrêt ???? { r1 = Karatsuba(a1,b1) r3 = Karatsuba(a2,b2) r2 = Karatsuba(a1+a2,b1+b2) - r1 - r3 r <- r1 * B * B + r2 * B + r3 } renvoie rmais j'aimerais vraiment réaliser cette fonction. Merci beaucoup si vous avez des idées ou même une autre méthode qui ne nécessiterais pas le récursif.
Merci d'avance
Partager