Что вам нужно, это какой-то массив 'множитель'.Примерно так:
private static IEnumerable<int[]> Multiply(IEnumerable<int[]> input,
IEnumerable<int> multiplyers)
{
foreach (var array in input)
{
foreach (var multiplyer in multiplyers)
{
yield return array.Concat(new int[] { multiplyer })
.ToArray();
}
}
}
Вы можете использовать этот метод следующим образом, чтобы получить тот же результат, что и в приведенном выше примере:
int n = 3;
var multiplyers = Enumerable.Range(0, 2);
IEnumerable<int[]> results =
from m in multiplyers select new int[] { m };
while (n-- > 1)
{
results = Multiply(results, multiplyers);
}
Теперь n
является переменной.