diff --git a/Tp2/recursivite.py b/Tp2/recursivite.py index 75e8d2264eaac0145d72240724ea1c174eea4875..bfc1dfc7afb4a88aeff66a2c69f262aec094b149 100755 --- a/Tp2/recursivite.py +++ b/Tp2/recursivite.py @@ -292,7 +292,9 @@ def puissance_calbuth_v2(x: int|float, n: int) -> int|float: #Q6: # le gain dépend du nombre de fois ou la puissance est dévisée par 2. #Q7: -# la fonction de n +# lorque n est un nombre pair +#si n est impair, pour se ramener au cas ou n est pair , on peut utiliser un appel recursif en decrementant +#n de 1, ainsi on obtient un nouveau n pair sur lequel on peut appliquer la fonction puissance_calbuth @@ -314,7 +316,13 @@ def puissance_calbuth_v2_amelioree(x: int|float, n: int) -> int|float: 1024 """ - ... + if n==0: + return 1 + elif n%2==0: + temps=puissance_calbuth_v2_amelioree(x,n//2) + return temps*temps + else: + return x*puissance_calbuth_v2_amelioree(x,n-1) def puissance_erronee(x: int|float, n: int) -> int|float: """ @@ -341,6 +349,13 @@ def puissance_erronee(x: int|float, n: int) -> int|float: q = n // 2 return puissance_erronee(x, r) * puissance_erronee(puissance_erronee(x, q), 2) + +#Q8: + #oui son idée améliorée permet en effet de diminuer la complexité en nombre + #de multiplications dans le calcul de la puissance . cette approche utilise le récursion pour déviser les problèmes + #en sous-problèmes plus petits et évite ainsi derépeter les multiplications inutilement. + # la fonction puissance calbuth v2 amelioree effectue seulement les multiplications nécessaires pour obtenir le résultat final. + def puissance_reparee(x: int|float, n: int) -> int|float: """ calcule x élevé à la puissance n