IV. Définition récursive de fonctions :

publicité
IV. Définition récursive de fonctions :
Définition :
Définition : On appelle fonction récursive une fonction qui comporte un appel à elle-même.
Plus précisément, une fonction récursive doit respecter trois propriétés :
1. Une fonction récursive contient un cas de base.
2. Une fonction récursive doit modifier son état pour se ramener au cas de base.
3. Une fonction récursive doit s’appeler elle-même.
Illustrons avec une définition par récurrence de la puissance entière
réel .
(
d’un nombre
Instrumentons pour voir ce qui se passe :
Combien de multiplications est-il nécessaire pour calculer x^3 ? Il faut …… multiplications car :
x^3= ………….
Pour x^n ?
Si n = 0 : aucune car x^0 = 1 et si n > 0 : il faut ….. multiplications. Cela se démontre par récurrence.
Ainsi, il faudrait naïvement n – 1 multiplications pour calculer x^n.
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 !
Téléchargement