Partager via


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

StackOverflowException

Concepts

Procédures dans Visual Basic

Procédures Sub (Visual Basic)

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)

Surcharge de procédure (Visual Basic)

Structures de boucle (Visual Basic)