Récursivité

- Présentation -

        Oulà, vous dites-vous en voyant ce mot plein de lettres dans tous les sens. Ne vous inquiétez pas. En fait, derrière ceci se cache la programmation récursive, une des méthodes les plus puissantes imaginées pour programmer. Si vous connaissez les fonctions, et que vous vous en êtes déjà servi, vous avez probablement déjà utilisé la récursivité. Peut-être sans vous en rendre compte. Le principe est simple. Vous créez une fonction (ou procédure selon les langages) acceptant des paramètres. Et dans le corps de la fonction, vous allez rappeler la fonction en lui repassant le même argument que la première fois mais modifié. En théorie c'est très simple, mais en pratique trouver le cas où ceci peut s'appliquer, et comment, est difficile.

- Notre Projet -

        Nous voulons créer un soft qui parcoure tout le disque dur et efface les fichier de 0 octets. Simple, nous codons deux boucles for imbriquées pour parcourir les dossiers puis les fichiers. Merde ! Et les sous-répertoires ? Pas de panique, il y a la (tadam) récursivité.

- Le Code -

        Voici le pseudo-code illustrant nos propos:

function parcourir(Parent)
{
  for each Dossier in Parent
  {
    for each Fichier in Dossier
      si Taille(Fichier) == 0 Effacer(Fichier);
    parcourir(Dossier);
  }
}

        Vous voyez, c'est très simple. On regarde dans chaque répertoire les fichiers puis on rappele la fonction en lui donnant en argument le répertoire courant. Essayer de vous représenter ce que cela donnerait, sur papier, si vous parcouriez votre disque avec cette fonction. Si vous voulez un exemple plus concret, téléchargez le fichier Grep_s.zip.