0
有人可以向我解釋這個代碼如何工作,它產生排列?這個產生排列的LINQ代碼的說明
我看到它使用遞歸列表建設,但我不能完全得到解決的確切機制我的大腦。
public static IEnumerable<IEnumerable<T>> Permute<T>(this IEnumerable<T> list)
{
if (list.Count() == 1)
return new List<IEnumerable<T>> { list };
return list
.Select((a, i1) =>
Permute(list.Where((b, i2) => i2 != i1))
.Select(b => (new List<T> { a }).Union(b)))
.SelectMany(c => c);
}
如果你關心效率,不要打擾學習這段代碼。 – SimpleVar
而且,除非我讀得太快,否則如果你關心準確性。按照定義,置換是無序的,而Union(一種集合操作)既忽略順序又消除重複項。 – phoog
我主要關心的是,我明白代碼的作用,但現在它怎麼做 –