我正在尝试计算可以堆叠的序列组合(ArrayList)的数量,但每一行不能包含相邻行中包含的任何元素,直到指定的“HEIGHT”。我有一个列表列表,“rowCombos”(全局),它是每行中元素的所有可能组合。我的代码应该循环遍历“rowCombos”,以查看哪一行 Combo 可以放置在前一行的顶部,遵循上述限制。一旦“面板”达到 HEIGHT 输入参数,它应该增加计数器,然后退出递归方法。我遇到的问题是stackOverflow,我运行了一个调试来查看它挂在哪里。似乎每个线程都通过该方法工作,
public static void
buildPanels(ArrayList<ArrayList<Float>> panel, int HEIGHT)
{
if (panel.size() == HEIGHT)
{
mainCount++;
return;
}
else
{
for ( List<Float> row:rowCombos)
{
boolean duplicateFound = false;
if (!panel.isEmpty())
{
for (Float element:row)
{
if (panel.get(panel.size() - 1).contains(element))
{
duplicateFound = true;
}
}
}
if (panel.isEmpty() || !(duplicateFound))
{
panel.add((ArrayList<Float>) row);
buildPanels(panel, HEIGHT);
}
} // end of for
} // end of else
} // end of buildPanels