How to generator all combinations (memory efficient algorithm)?

Just create an iterator method using yield return, like so: public class Combinations: IEnumerable<Combination> { public IEnumerator<T> GetEnumerator() { Combination currentCombination = Combination.FirstCombination(); while (currentCombination.IsValid()) { yield return currentCombination; currentCombination = currentCombination.NextCombination(); // return invalid combo if currentCombination is the last possible combination } } } Of course you still have to write the Combination … Read more