0% ont trouvé ce document utile (0 vote)
34 vues18 pages

La Récursivité

Transféré par

hajaruuy123
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
34 vues18 pages

La Récursivité

Transféré par

hajaruuy123
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

La récursivité

Définition
• Définition

• Une fonction est récursive si elle s’appelle elle-même.

• Problème

• Appels infinis 
Définition
• Solution
• Le cas Trivial (Base Case)
• Une condition qui détermine si le problème est terminé
Exemple du factoriel
• la fonction factorielle se définit comme : n! = n *(n - 1)!
• Cette définition est infinie, en ce sens qu’elle ne s’achève pas. Pour
être calculable, il faut avoir une condition d’arrêt. 0! = 1 représente
notre condition d’arrêt.
• def fact(n:int)->int:
if(n==0):
return 1
else:
return n*fact(n-1)

• print(5,"!=",fact(5))
Exemple du factoriel
• la fonction factorielle se définit comme : n! = n *(n - 1)!
• Cette définition est infinie, en ce sens qu’elle ne s’achève pas. Pour être
calculable, il faut avoir une condition d’arrêt. 0! = 1 représente notre
condition d’arrêt.
• def fact(n:int)->int:
if(n==0):
return 1
else:
return n*fact(n-1)

• print(5,"!=",fact(5))

• 5 != 120
terminaison d’une fonction récursive
• Pour s’assurer de la terminaison d’une fonction récursive, on doit respecter les
règles suivantes :
• • La fonction doit contenir un ou plusieurs cas de base ne comportant pas d’appel
récursif.
• Dans la fonction fact : c’est le cas n = 0.
• • Les appels de la fonction se font des arguments plus simple pour conduire aux
cas de base.
• Dans l’appel de fact(n) : les arguments successifs sont n − 1 > n − 2 > · · · > 0.
formulation récursive d’une fonction
• Toute formulation récursive d’une fonction possède au moins un cas
de base et un cas récursif. Une grande variété de formes est possible.
• Cas de base multiples (voir exemple suivant)
• Cas récursifs multiples (à fair en TD)
• Double récursion
• plusieurs appels à la fonction (voir exemple suivant)
Exemple: la fonction fibonacci

La fonction fibonacci(n) est définie récursivement, pour tout entier


naturel n, de la manière suivante :
Exemple: la fonction fibonacci
• def fibonacci(n):
if (n==0):
return 0
elif (n==1):
return 1
else :
return fibonacci(n-1)+fibonacci(n-2)

• print("fibonacci(",6,")=", fibonacci(6))
Exemple: la fonction fibonacci
• def fibonacci(n):
if (n==0):
return 0
elif (n==1):
return 1
else :
return fibonacci(n-1)+fibonacci(n-2)

• print("fibonacci(",6,")=",fibonacci(6))

• fibonacci( 6 )= 8
Construction d’un Algorithme récursif
• Pour trouver une solution récursive à un problème (si elle existe), on
doit:
• 1. Chercher à décomposer le problème en plusieurs sous-problèmes
du même type mais de tailles inférieures,
• 2. Déterminer l’action qui représente le cas trivial, et donner sa
solution.
• 3. Et en supposant connaitre l’action pour le cas d’ordre n-1, peut-on
prévoir le cas suivant, c’est-à-dire d’ordre (n).
• Si ces trois (03) conditions sont satisfaites, alors on peut envisager
l’emploie d’une méthode récursive.
exercices
• Exercice 1
• une fonction récursive pour calculer la somme d'une séquence:
1, 2,3, …, n
exercices
• Exercice 2
• écrire une fonction récursive qui calcule xn
exercices
• Exercice 3
• Ecrire une fonction récursive qui calcule le pgcd de deux entiers a et b
sachant que pgcd(a, b)= pgcd(b, r) où r est le reste dans la division
euclidienne de a par b.
exercices
• Exercice 4
• Ecrire une fonction récursive qui calcule la longueur d’une chaine de
caractères
exercices
• Exercice 5
• Ecrire une fonction récursive qui calcule la somme des éléments
d’une liste L.
exercices
• Exercice 6
• Soit la suite définie par :
• 𝑈𝑛= 1 si 𝑛≤2
• 3𝑈𝑛−1+𝑈𝑛−2 𝑠𝑖𝑛𝑜𝑛
• Ecrire une fonction récursive qui calcule le nième terme de la suite;
exercices

• Exercice 7
• Un tableau X est trié par ordre croissant si 𝑥(𝑖)≤𝑥(𝑖+1),∀𝑖, écrire une
fonction récursive permettant de vérifier qu’un tableau X est trié ou
non

Vous aimerez peut-être aussi