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, il ne s’agit pas du moyen le plus efficace d’écrire du code Visual Basic.

La procédure suivante utilise la récursivité pour calculer la factorielle de son argument d’origine.

Function Factorial(n As Integer) As Integer
    If n <= 1 Then
        Return 1
    End If
    Return Factorial(n - 1) * n
End Function

Considérations relatives aux procédures récursives

Conditions de limitation. Vous devez concevoir une procédure récursive pour tester au moins une condition qui peut arrêter la récursivité, et vous devez également gérer le cas où aucune condition de ce type n’est satisfaite dans un nombre raisonnable d’appels récursifs. Sans au moins une condition qui peut être remplie sans échec, votre procédure exécute un risque élevé d’exécution dans une boucle infinie.

Utilisation de la mémoire. Votre application dispose d’une quantité limitée d’espace pour les variables locales. Chaque fois qu’une procédure s’appelle elle-même, elle utilise plus d’espace pour des copies supplémentaires de ses variables locales. Si ce processus se poursuit indéfiniment, il provoque une StackOverflowExceptionerreur.

Efficacité. Vous pouvez presque toujours utiliser une boucle au lieu de récursivité. Une boucle n’a pas la surcharge de passage d’arguments, l’initialisation d’un stockage supplémentaire et le retour de valeurs. Vos performances peuvent être beaucoup mieux sans appels récursifs.

Récursivité mutuelle. Vous pouvez observer des performances très médiocres, voire une boucle infinie, si deux procédures s’appellent mutuellement. Une telle conception présente les mêmes problèmes qu’une procédure récursive unique, mais peut être plus difficile à détecter et déboguer.

Appel avec parenthèses. Lorsqu’une Functionprocédure s’appelle de manière récursive, vous devez suivre le nom de la procédure entre parenthèses, même s’il n’existe aucune liste d’arguments. Sinon, le nom de la fonction est pris comme représentant la valeur de retour de la fonction.

Test. Si vous écrivez une procédure récursive, vous devez le tester très attentivement pour vous assurer qu’il répond toujours à une condition de limitation. Vous devez également vous assurer que vous ne pouvez pas manquer de mémoire en raison d’un trop grand nombre d’appels récursifs.

Voir aussi