Um bom exemplo da vida real nos negócios é algo chamado "Lista de materiais". Esses são os dados que representam todos os componentes que compõem um produto acabado. Por exemplo, vamos usar uma bicicleta. Uma bicicleta possui guidão, rodas, estrutura, etc. E cada um desses componentes pode ter subcomponentes. por exemplo, a roda pode ter raios, uma haste de válvula etc. Então, normalmente, estes são representados em uma estrutura de árvore.
Agora, para consultar qualquer informação agregada sobre a lista técnica ou para alterar elementos em uma lista técnica, muitas vezes você recorre à recursão.
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>();
}
E uma amostra de chamada recursiva ...
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, a Classe BomPart teria muitos outros campos. Talvez você precise descobrir quantos componentes plásticos você tem, quanto trabalho é necessário para construir uma peça completa, etc. Tudo isso volta à utilidade da Recursão em uma estrutura de árvore.