Un ejemplo realmente bueno de la vida real en los negocios es algo que se llama "Lista de materiales". Estos son los datos que representan todos los componentes que conforman un producto terminado. Por ejemplo, usemos una bicicleta. Una bicicleta tiene manillares, ruedas, un cuadro, etc. Y cada uno de esos componentes puede tener subcomponentes. por ejemplo, la rueda puede tener radios, un vástago de válvula, etc. Por lo general, estos están representados en una estructura de árbol.
Ahora, para consultar cualquier información agregada sobre la lista de materiales o para cambiar elementos en una lista de materiales, muchas veces recurre a la recursión.
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>();
}
Y una muestra recursiva de muestra ...
static int ComponentCount(BomPart part)
{
int subCount = 0;
foreach(BomPart p in part.Components)
subCount += ComponentCount(p);
return part.Quantity * Math.Max(1,subCount);
}
Obviamente, la clase BomPart tendría muchos más campos. Es posible que deba averiguar cuántos componentes plásticos tiene, cuánto trabajo requiere construir una parte completa, etc. Sin embargo, todo esto vuelve a la utilidad de la Recursión en una estructura de árbol.