0
有什麼辦法可以將下面的代碼片段轉換爲循環,而不是使用繁重的LINQ?遞歸算法,用於生成沒有linq的組合
public static IEnumerable<IEnumerable<T>> Combinations<T>(this IEnumerable<T> elements, int k)
{
return k == 0
? new[] {new T[0]}
: elements.SelectMany((e, i) =>
elements.Skip(i + 1).Combinations(k - 1).Select(c => (new[] {e}).Concat(c)));
}
目標是提出給定元素列表的大小k的所有可能的組合。
是的,有一種方法。畢竟,LINQ的東西解決了循環。你問「這是怎麼回事?」你有沒有想過打破每一個LINQ方法調用? –
感謝您的回答!是的,如果有辦法,我想知道怎麼做,因爲我不熟悉LINQ。我嘗試了幾件事情,但無法得到相同的結果... – Greg
這是問題已經從算法的角度來解決[這裏](http://stackoverflow.com/questions/127704/algorithm-to-return -all組合-的-K-元件-從-N)。還要注意,刪除linq並不會改進組合算法的運行時間,因爲它們都非常慢。 –