Un très bon exemple concret dans le monde des affaires est ce qu’on appelle une "nomenclature". Ce sont les données qui représentent tous les composants qui composent un produit fini. Par exemple, utilisons un vélo. Un vélo a un guidon, des roues, un cadre, etc. Chacun de ces composants peut avoir des sous-composants. Par exemple, la roue peut avoir des rayons, une tige de soupape, etc. Ainsi, ils sont généralement représentés dans une arborescence.
Maintenant, pour interroger des informations globales sur la nomenclature ou pour modifier des éléments d'une nomenclature, vous avez souvent recours à la récursivité.
class BomPart
{
public string PartNumber { get; set; }
public string Desription { get; set; }
public int Quantity { get; set; }
public bool Plastic { get; set; }
public List<BomPart> Components = new List<BomPart>();
}
Et un exemple d'appel récursif ...
static int ComponentCount(BomPart part)
{
int subCount = 0;
foreach(BomPart p in part.Components)
subCount += ComponentCount(p);
return part.Quantity * Math.Max(1,subCount);
}
De toute évidence, la classe BomPart aurait beaucoup plus de champs. Vous devrez peut-être déterminer le nombre de composants plastiques dont vous disposez, la quantité de travail nécessaire pour construire une pièce complète, etc. Tout cela nous ramène à l'utilité de la récursivité sur une structure arborescente.