Procédures récursives (Visual Basic)
Une procédure récursive est une procédure qui s'appelle elle-même. En général, ce n'est pas le moyen le plus efficace d'écrire du code Visual Basic.
La procédure suivante utilise la récurrence pour calculer la factorielle de son argument d'origine.
Function factorial(ByVal n As Integer) As Integer
If n <= 1 Then
Return 1
Else
Return factorial(n - 1) * n
End If
End Function
Considérations sur les procédures récursives
Conditions de limitation Vous devez concevoir une procédure récursive à tester pour au moins une condition qui peut mettre fin à la récurrence, et vous devez également gérer les situations pour lesquelles aucune de ces conditions n'est satisfaite pour un nombre raisonnable d'appels récursifs. Si aucune condition ne peut être satisfaite sans erreur, votre procédure s'expose à un risque élevé d'exécution dans une boucle infinie.
Utilisation de la mémoire. Votre application dispose d'un espace limité pour les variables locales. Chaque fois qu'une procédure s'appelle elle-même, elle utilise davantage d'espace pour les copies supplémentaires de ses variables locales. Si le processus se poursuit indéfiniment, il peut se produire une erreur StackOverflowException.
Efficacité. Vous pouvez presque toujours remplacer la récurrence par une boucle. Une boucle ne possède pas la charge mémoire pour passer des arguments, initialiser le stockage supplémentaire et retourner des valeurs. Votre performance peut être considérablement améliorée sans appels récurrents.
Récurrence mutuelle Vous pouvez observer une performance médiocre ou même une boucle infinie si deux procédures s'appellent l'une et l'autre. Ce type de conception présente les mêmes problèmes qu'une procédure récursive simple, mais peut être plus difficile à détecter et à déboguer.
Appel avec parenthèses. Lorsqu'une procédure Function s'appelle de manière récursive, le nom de cette procédure doit être suivi de parenthèses, même s'il n'y a pas de liste d'arguments. Sinon, le nom de la fonction est considéré comme sa valeur de retour.
Test Si vous écrivez une procédure récursive, vous devez la tester soigneusement afin de vous assurer qu'elle satisfait toujours certaines conditions de limitation. Vous devez également veiller à toujours disposer d'une mémoire suffisante en dépit du grand nombre d'appels récurrents.
Voir aussi
Tâches
Procédures de dépannage (Visual Basic)
Dépannage des exceptions : System.StackOverflowException
Référence
Concepts
Procédures Function (Visual Basic)
Procédures Property (Visual Basic)
Procédures d'opérateur (Visual Basic)
Paramètres et arguments d'une procédure (Visual Basic)