Aide en ligne » Tutoriels » Premiers pas » La récursivité

La récursivité

Une procédure peut appeler une autre procédure, mais elle peut aussi s'appeler elle-même ! Une procédure qui s'appelle elle-même est dite récursive. Si la récursivité ouvre à la tortue de très vastes horizons, elle est assez délicate à utiliser à bon escient. Voici quelques indications pour bien débuter.

Commençons par un exemple :

  1. pour spirale n
  2. av n ; td 90 ; spirale n+5
  3. fin

spirale 5

La tortue ne s'arrête jamais ! (en fait, elle finit par s'arrêter lorsque la mémoire est saturée, ou lorsque l'on clique sur le bouton "stop")

Analysons un peu le comportement de la tortue :

- elle commence par obéir aux commandes av 5 ; td 90 (la variable n a la valeur 5 donnée dans la fenêtre de commande)

- elle doit alors exécuter la commande spirale 5+5 c'est à dire spirale 10 : elle commence donc par exécuter av 10 ; td 90

- elle doit alors exécuter spirale 15 etc.

L'exécution de la procédure n'est donc jamais terminée.

Transformons la procédure pour éviter cet inconvénient :

  1. pour spirale n
  2. si (n<=100) alors [
  3. av n ; td 90 ; spirale n+5
  4. ]
  5. fin

Le test d'arrêt permet à la procédure de s'achever, et toute procédure récursive doit inclure un tel test.