İş dünyasında gerçekten iyi bir gerçek hayat örneği "Malzeme Listesi" olarak adlandırılan bir şeydir. Bu, bitmiş bir ürünü oluşturan tüm bileşenleri temsil eden veridir. Örneğin, bir Bisiklet kullanalım. Bir Bisikletin gidonları, tekerlekleri, çerçevesi vb. Vardır. Bu bileşenlerin her birinin alt bileşenleri olabilir. örneğin Tekerleğin konuşmacıya, bir valf gövdesine, vs. sahip olabilir.
Şimdi malzeme listesi ile ilgili herhangi bir toplu bilgiyi sorgulamak veya malzeme listesi içindeki öğeleri değiştirmek için genellikle yinelemeye başvurduğunuzda.
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>();
}
Ve örnek bir özyinelemeli çağrı ...
static int ComponentCount(BomPart part)
{
int subCount = 0;
foreach(BomPart p in part.Components)
subCount += ComponentCount(p);
return part.Quantity * Math.Max(1,subCount);
}
Açıkçası, BomPart Sınıfının çok daha fazla alanı olacaktı. Ne kadar plastik parçaya sahip olduğunuzu, tam bir parça oluşturmak için ne kadar emek harcayacağınızı vb. Bulmanız gerekebilir. Bütün bunlar, bir ağaç yapısındaki özyinelemenin yararına geri döner.