我正在实现递归中位数切割算法https://en.wikipedia.org/wiki/Median_cut并且遇到问题,我的回复表示"运算符+不能应用于List和List"类型的操作数。
这是我的代码,因此您可以深入了解我所询问的内容:
public static List<Color> Cut(List<Color> input,int n)
{
if (n == 1)
{
//creating List<Color> containing 1 color element which is
//average of all colors from input and returning this 1 element
//list ending our recursion
}
else
{
SortWithRespectToWidestChannel(input)
int median = input.Count / 2;
List<Color> l1 = new List<Color>();
List<Color> l2 = new List<Color>();
l1.AddRange(input.GetRange(0, median));
l2.AddRange(input.GetRange(median, input.Count - median));
return Cut(l1, n / 2) + Cut(l2, n / 2); // <---**here is problem**
}
所以你知道如何解决我的问题吗? 提前谢谢。
答案 0 :(得分:0)
如果您想将所有颜色放在一个列表中,请尝试此操作。
变化:
return Cut(l1, n / 2) + Cut(l2, n / 2); // <---**here is problem**
到
var result = new List<Color>();
result.AddRange(Cut(l1, n / 2));
result.AddRange(Cut(l2, n / 2));
return result;
如果我对你的问题有所了解,请给我反馈。