adplus-dvertising

Nous utilisons des cookies pour améliorer votre expérience. En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies.


Politique de confidentialité

Rappel sur l'approche récursive

Rappel sur l'approche récursive

La récursion est un concept fondamental en informatique et en programmation. Elle consiste à définir une fonction en utilisant une ou plusieurs instances de cette même fonction.

En d'autres termes, une fonction récursive est une fonction qui s'appelle elle-même à l'intérieur de sa propre définition. Cela permet de résoudre des problèmes complexes en les divisant en sous-problèmes plus simples, qui sont ensuite résolus en appelant la fonction récursive sur les sous-problèmes.

Cependant, il est important de noter que la récursion peut conduire à des boucles infinies si elle n'est pas gérée correctement. Il est donc important de définir une condition de sortie pour la fonction récursive, appelée condition de base, qui permet de sortir de l'appel récursif et de terminer la fonction.

La récursion est largement utilisée dans de nombreux domaines de l'informatique, notamment en mathématiques, en algorithmique et en programmation. Elle peut être utilisée pour résoudre des problèmes tels que la recherche de chemin dans un graphe, la génération de permutations, la recherche d'objets dans un arbre, et bien plus encore.

Voici deux exemples simples de fonctions récursives :

La fonction factorielle :

La fonction factorielle est définie comme suit : $$n! = n * (n-1) * (n-2) * \dots * 1$$

On peut définir une fonction récursive pour calculer la factorielle de n :

def factorielle(n):
    if n==0:
        return 1

    return n*factorielle(n-1)

Dans cette fonction, la condition de base est que si n est égal à 0, la fonction renvoie 1. Sinon, elle renvoie n multiplié par la factorielle de n-1.

La somme de nombres :

On peut définir une fonction récursive pour calculer la somme des n premiers nombres :

def somme(n):
    if n==1:
        return 1

    return n+somme(n-1)

Dans cette fonction, la condition de base est que si n est égal à 1, la fonction renvoie 1. Sinon, elle renvoie n ajouté à la somme des n-1 premiers nombres.

 

Définir une condition de base

Définir une condition de base est une étape importante lors de la conception d'une fonction récursive pour éviter les boucles infinies.

La condition de base est une condition qui indique à la fonction récursive de sortir de l'appel récursif et de terminer l'exécution de manière appropriée. Cette condition doit être définie de manière à garantir que la fonction ne s'appelle pas elle-même indéfiniment.

Voici quelques exemples de conditions de base pour différentes fonctions récursives :

Exemple 1 :

Pour la fonction factorielle, la condition de base est que si l'argument est égal à zéro, la fonction renvoie 1 :

def factorielle(n):
    if n==0:
        return 1

    return n*factorielle(n-1)
Exemple 2 :

Pour la fonction somme, la condition de base est que si l'argument est égal à un, la fonction renvoie 1 :

def somme(n):
    if n==1:
        return 1

    return n+somme(n-1)

Dans tous ces exemples, la condition de base est essentielle pour garantir que la fonction récursive termine de manière appropriée et évite les boucles infinies.

En résumé, définir une condition de base est une étape cruciale lors de la conception d'une fonction récursive pour éviter les boucles infinies. La condition de base doit être définie de manière à garantir que la fonction ne s'appelle pas elle-même indéfiniment.

 

Appels récursifs et l'empilement de la pile d'exécution

Lorsqu'une fonction récursive est appelée, elle s'exécute normalement jusqu'à ce qu'elle atteigne un point où elle appelle elle-même. À ce stade, une nouvelle instance de la fonction est créée et ajoutée à la pile d'exécution. La nouvelle instance commence alors son exécution à partir du début, tout en conservant les variables et les états de l'instance précédente.

Chaque appel récursif ajoute une nouvelle instance de la fonction à la pile d'exécution. Lorsque la fonction atteint la condition de base et renvoie une valeur, cette valeur est retournée à l'appel précédent, qui continue son exécution là où il s'était arrêté. Cela se poursuit jusqu'à ce que toutes les instances de la fonction aient été retirées de la pile d'exécution, et que la valeur finale soit renvoyée à l'appelant original.

Il est important de comprendre que chaque appel récursif consomme de la mémoire en ajoutant une nouvelle instance de la fonction à la pile d'exécution. Si le nombre d'appels récursifs est trop important, cela peut entraîner une utilisation excessive de la mémoire et des erreurs de dépassement de pile.

Il est donc essentiel de définir une condition de base pour que la fonction récursive puisse sortir de l'appel récursif et terminer l'exécution de manière appropriée. La condition de base permet de s'assurer que la fonction récursive ne continue pas à s'appeler elle-même indéfiniment, évitant ainsi les boucles infinies et les erreurs de dépassement de pile.

En résumé, comprendre les appels récursifs et l'empilement de la pile d'exécution est essentiel pour maîtriser la récursivité en programmation. Il est important de définir une condition de base pour que la fonction récursive puisse sortir de l'appel récursif et terminer l'exécution de manière appropriée, afin d'éviter les erreurs de dépassement de pile et les boucles infinies.

Partager ce cours avec tes amis :
Rédigé par ESSADDOUKI Mostafa
ESSADDOUKI
The education of the 21st century opens up opportunities to not merely teach, but to coach, mentor, nurture and inspire.