J'ai une question sur les mérites de deux approches différentes pour mettre en œuvre une méthode récursive. J'ai toujours suivi l'approche de la version 1, c'est-à-dire en acceptant un seul paramètre Node, mais j'ai récemment rencontré le style utilisé dans la version 2, qui accepte une collection de nœuds.Méthode récursive: paramètre d'élément unique ou collection d'éléments?
Tenir compte de la classe de noeud suivant, ainsi que les 2 versions de la méthode de visite:
class Node
{
public List<Node> children = new List<Node>();
// other data members
}
Version 1 accepte un seul paramètre Node:
Visit(Node n)
{
DoSomethingUsefulWith(n);
foreach (Node child in n.children)
Visit(child);
}
Version 2 accepte une collection de nœuds:
Visit(List<Node> nodes)
{
foreach (Node n in nodes)
{
DoSomethingUsefulWith(n);
Visit(n.children);
}
}
Y a-t-il des avantages, même stylistiques, à utiliser une forme sur la autre? Le choix devrait-il être basé uniquement sur le fait de savoir si vous commencez avec un seul nœud par rapport à une collection de nœuds, même s'il serait trivial d'utiliser l'une ou l'autre version de la méthode dans les deux cas?
Je écrirais seulement le deuxième si je me trouvais le faisant beaucoup dans le code en dehors de la première méthode, sinon je laisserais juste l'itération dans le premier. – tvanfosson