2010-08-20 4 views
6

Je n'ai aucun programme installé pour mesurer la complexité du code cyclomatrique pour le moment. Mais je me demandais si une méthode récursive augmente la complexité?La méthode récursive augmente-t-elle la complexité cyclomatrique?

par exemple.

// just a simple C# example to recursively find an int[] 
// within a pile of string[] 
private int[] extractInts(string[] s) 
{ 
    foreach (string s1 in s) 
    { 
     if (s1.ints.length < 0) 
     { 
      extractInts(s1); 
     } 
     else 
     { 
      return ints; 
     } 
    } 
} 

Merci.

+1

Où est le 'int []' d'origine dans votre code? – strager

+1

_Cyclomatic complexité_ dépend du nombre de chemins indépendants dans votre code. Approximativement traduit chercher ramification. La récursivité n'a pas besoin d'impliquer plusieurs chemins de contrôle. Je risque de deviner qu'il n'y a pas nécessairement de correspondance entre la récursivité et la complexité cyclomatique élevée. – dirkgently

Répondre

4

Pour autant que je comprends, non. Dans votre exemple, il n'y a qu'un chemin linéaire indépendant à la méthode récursive, donc cela n'augmenterait pas la complexité cyclomatique.

1
  1. Les boucles augmentent la complexité cyclomatique.
  2. Une boucle peut souvent être réécrite en utilisant la récursivité plus une condition de garde.

Même si l'appel récursif lui-même ne compte pas strictement comme un incrément, la condition de garde le fait. Cela rend la boucle et la récursivité + garde au pair.

Questions connexes