Skip to main content

Qu'est-ce qu'un appel récursif?

Dans la programmation, un appel récursif est une commande dans un sous-programme ou une fonction qui indique au programme d'exécuter à nouveau le même sous-programme.Les performances de répétition peuvent être le résultat direct de la fonction, ou une deuxième fonction peut être déclenchée qui, à son tour, se réfère à la première fonction.Un appel récursif a des similitudes avec la boucle infinie redoutée, mais le sous-programme a toujours une déclaration conditionnelle qui indique au programme quand arrêter de répéter la récursivité.

Le concept de récursivité est peut-être mieux illustré par l'utilisation d'un exemple.Supposons qu'un couvreur applique de nouveaux bardeaux à une maison.Pour commencer, il doit transporter un paquet de bardeaux sur le toit.Une fois qu'il a cloué le premier paquet en place, il doit descendre l'échelle, récupérer un autre paquet et le clouer en place.Le processus se poursuit alors qu'une série de go, fetch, de retour jusqu'à ce que le dernier bardeau soit appliqué.À ce stade, le couvreur est libre de passer au poste suivant ou de rentrer chez lui.

Bien que l'exemple soit une simplification excessive, il contient tous les éléments d'un appel récursif.Il y a un point de départ, le couvreur doit récupérer ce dont il a besoin, revenir au début et, lorsque la condition finale est remplie, arrêtez-vous.C'est essentiellement ce que fait le programme;Il démarre, met en œuvre une action, revient sur lui-même et se termine lorsque la condition de fin se produit.

La condition de fin est appelée le cas de base.Il est essentiel pour tous les appels récursifs;Sans cela, la fonction continuerait de se répéter.Au mieux, cela se traduit par la vidange des ressources de mémoire des systèmes.Normalement, la surcharge écrasera le programme à un moment donné, mais au moment où le problème est découvert, des dommages importants peuvent être causés.

Les programmeurs expérimentés peuvent reconnaître la similitude entre un appel récursif et une boucle pour ou bien que.Si, par exemple, l'objectif est de trouver le nombre total d'inventaires de tous les stocks avec des numéros de pièce supérieurs à 999, une boucle pour le programme indique à toutes les instances de qualification et une boucle WHIla condition est valide.On pourrait dire qu'un appel récursif combine certaines des caractéristiques de ces boucles avec une déclaration if-then-else;Si cette condition est vraie, faites-le, ou bien de faire quelque chose de différent si la condition est fausse.La récursivité permet généralement un code plus compact et permet de passer le problème à la fonction plus près du point qu'il est nécessaire.