Exercices corrigés sur les fonctions récursives-TD2-

27 Apr 2019 27 Apr 2019 37752 vues ESSADDOUKI Mostafa 5 min de lecture

Analyse de fonctions récursives

Dans cette section, nous allons analyser des fonctions récursives pour comprendre leur comportement et déterminer ce qu'elles calculent. La récursivité est un concept fondamental en algorithmique qui permet d'exprimer élégamment de nombreux algorithmes.

Exercice 1

Analyse de fonction récursive - Maximum d'un tableau

Niveau : Débutant

Expliquez la fonctionnalité de la fonction suivante :

FONCTION fct1(tab[], n)
    x ← -1
    SI n = 1 ALORS
        RETOURNE tab[0]
    SINON
        x ← fct1(tab, n-1)
    FINSI
    
    SI x > tab[n-1] ALORS
        RETOURNE x
    SINON
        RETOURNE tab[n-1]
    FINSI
FINFONCTION
def fct1(tab, n):
    if n == 1:
        return tab[0]
    else:
        x = fct1(tab, n-1)
    
    if x > tab[n-1]:
        return x
    else:
        return tab[n-1]
Exercice 2

Analyse de fonction récursive - Puissance rapide

Niveau : Intermédiaire

Expliquez la fonctionnalité de la fonction suivante :

FONCTION fct2(a, b)
    SI b = 0 ALORS
        RETOURNE 1
    FINSI

    SI (b mod 2) = 0 ALORS
        RETOURNE fct2(a * a, b / 2)
    FINSI

    RETOURNE fct2(a * a, b / 2) * a
FINFONCTION
def fct2(a, b):
    if b == 0:
        return 1
    
    if b % 2 == 0:
        return fct2(a * a, b // 2)
    
    return fct2(a * a, b // 2) * a

Récapitulatif

FonctionFonctionnalitéComplexité
fct1Recherche du maximum dans un tableauO(n) en temps, O(n) en espace (pile récursive)
fct2Calcul de aᵇ par exponentiation rapideO(log b) en temps, O(log b) en espace
Conseils pour l'analyse de fonctions récursives
  1. Identifier le cas de base (condition d'arrêt) et ce qu'il retourne.
  2. Analyser l'appel récursif : comment les paramètres évoluent-ils ?
  3. Comprendre comment le résultat de l'appel récursif est combiné avec d'autres valeurs.
  4. Tester avec de petites valeurs pour vérifier la compréhension.
Points clés à retenir
  • Une fonction récursive s'appelle elle-même jusqu'à atteindre un cas de base.
  • Le maximum d'un tableau peut s'exprimer récursivement comme le maximum entre le dernier élément et le maximum des précédents.
  • L'exponentiation rapide utilise la propriété a2k = (a²)k pour réduire la complexité à O(log n).
  • La récursivité a un coût mémoire : chaque appel utilise de la pile.
Sortie
// La sortie apparaîtra ici…
Prêt · Ctrl+Entrée pour exécuter

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.