问题描述
我正在尝试编写一种方法,该方法枚举可以在for循环中使用的所有序列。
假设IEnumerable<int>[] intValues
是整数的原始集合,假设它是:
intValues[0] = int[] {1,2,3}
intValues[1] = int[] {4,5}
我需要这样写EnumerateSequences(...)
:
foreach (int[] seq in EnumerateSequences(...))
{
// 1st iteration: seq = [1,4]
// 2nd iteration: seq = [1,5]
// 3rd iteration: seq = [2,4]
// 4th iteration: seq = [2,5]
// 5th iteration: seq = [3,4]
// 6th iteration: seq = [3,5]
}
我想出了这种方法,但是EnumerateSequences(intValues,null)
不会在内部递归,因此它总是返回null
:
private static IEnumerable<int[]> EnumerateSequences(IEnumerable<int>[] intValues,int pos,int[] seq)
{
if (pos < intValues.Length)
{
foreach (var f in intValues[pos])
{
if (seq == null && pos == 0)
{
seq = new int[intValues.Length];
}
seq[pos] = f;
var _ = EnumerateSequences(intValues,pos + 1,seq);
}
}
else if (pos == intValues.Length || seq == null)
{
yield return seq;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)