En fait, c’est l’algorithme d’exponentiation rapide qui est à la base de l’implémentation de l’opérateur
puissance en Python, algorithme basé sur la récursivité …
On en reparlera en exercice !
Exercice 1 :
Ecrire un programme calculant n ! (factorielle de n) pour un entier naturel dans une version itérative, puis
récursive. Comparer leurs vitesses d’exécution grâce au module time de Python !
AIDE :
n ! = 1 si n= 0
n ! = 1 * 2 * 3 * … * n pour n > 0
Déterminer une définition par récurrence de n ! : ………………………………………………………...
Info Python :
Si vous testez une fonction récursive avec des paramètres nécessitant un très grand nombre d’appels de la
fonction, sachez que par défaut, Python limite en général (voir version) le nombre d’appels à 1000.
Si l’on souhaite augmenter la taille limite de la pile d’appels récursifs, il suffit d’utiliser les instructions
suivantes :
import sys
sys.setrecursionlimit(100000)
A tester ! Au fait qu’est-ce qu’est qu’une pile ???? A voir !!!!
Exercice 2 :
Soit a un réel positif et un entier naturel n, vérifier que :
Ces formules sont à la base de la méthode dite d’exponentiation rapide. Programmer cette méthode
naturellement par une fonction récursive.
Exercice 3 :
1°) a. Vérifier que pour tout réel
b. Comparer le nombre d’opérations nécessaires pour un calcul d’image selon les 2 formes ci-dessus.
2°) Algorithme de Hörner :
Soit P(x) un polynôme de degré n. P(x) peut s’écrire sous la forme suivante :
P(x) = a0 + a1x + a2 x² + a3 x3 + … + an xn = a0 + x(a1+ a2 x + a3 x2 + … + an xn-1)
P(x) = a0 + x(a1+ x(a2 + a3 x + … + an xn-2))
P(x) = a0 + x(a1+ x(a2 + x(a3 + … )))
On peut utiliser cette formule pour calculer l’image d’un réel x0 par P. C’est la méthode de Hörner.
a. Quel est l’algorithme de calcul ?
b. Pour un polynôme de degré n, le nombre d’opérations avec l’écriture
P(x) = a0 + a1x + a2 x² + a3 x3 + … + an xn est de l’ordre de n²/2 plus précisément : n²/2 + 3/2 n.
Le nombre d’opérations avec la méthode de Hörner est de l’ordre de 2n.
Vérifiez-le !