/// <summary> /// /// </summary> /// <param name="container"></param> /// <param name="addends"></param> /// <param name="baseNumber"></param> /// <param name="number"></param> /// <param name="times"></param> private static void ResolveCore(SubtractionItemContainer container, List <int> addends, int baseNumber, int number, int times) { if (addends.Count == times - 1) { if (addends.Sum() < baseNumber) { addends.Insert(0, baseNumber); container.Add(addends); } return; } for (var i = 1; i < number; i++) { var dd = new List <int>(addends) { i }; ResolveCore(container, dd, baseNumber, number - 1, times); } }