Une procédure ou une fonction peut contenir un appel à une autre procédure en son sein. Y compris, le sous-programme peut s'appeler. Dans ce cas, l'ordinateur s'en fiche. Il exécute également, comme toujours, systématiquement les commandes qu'il a rencontrées de haut en bas.
Si vous vous souvenez des mathématiques, vous pouvez y rencontrer le principe d'induction mathématique. C'est comme suit :
Une certaine affirmation est vraie pour chaque natureln si
1. il est valable pour n = 1 et
2. de la validité de l'énoncé pour tout naturel arbitraire n = k il s'ensuit qu'il est vrai pourn = k+1.
En programmation, cette technique est appelée récursivité
La récursivité est un moyen de définir un ensemble d'objets en fonction de l'ensemble lui-même, sur la base de cas de base simples donnés.
Récursif sera également appelé une procédure (fonction) qui s'appelle elle-même directement ou via d'autres procédures et fonctions
Un exemple de procédure récursive :
procédure Rec(a : entier);
commencer
si un > 0 alors
Rec(a - 1);
écrire un);
fin ;
Schématiquement, le travail de récursivité peut être représenté par un organigramme
La procédure Rec() est exécutée avec le paramètre 3. Ensuite, à l'intérieur de la procédure avec le paramètre 3, la procédure avec le paramètre 2 est appelée, et ainsi de suite, jusqu'à ce que la procédure avec le paramètre 0 soit appelée. Lorsque la procédure avec le paramètre le paramètre 0 est appelé, l'appel récursif ne se produira déjà pas et la procédure avec le paramètre 0 imprimera le numéro 0 et se terminera. Ensuite, le contrôle est renvoyé à la procédure avec le paramètre 1, elle termine également son travail en imprimant le numéro 1, et ainsi de suite. avant la procédure avec le paramètre 3.
Toutes les procédures appelées sont stockées en mémoire jusqu'à ce qu'elles terminent leur travail. Le nombre de procédures concurrentes est appelé profondeur de récursivité
.