0
我想计算可堆叠的序列(ArrayList)的组合数,但每行不能包含任何相邻行中包含的元素,直到指定的“HEIGHT” 。我有一个列表列表,“rowCombos”(全局),它们是每行中可能存在的元素的所有可能组合。我的代码应循环遍历“rowCombos”,以查看哪些行组合可以放置在继续行的顶部,遵循上述限制。一旦“面板”达到HEIGHT输入参数,它应该增加计数器,然后退出递归方法。我遇到的问题是stackoverflow,我已经运行了一个调试,以查看它挂起的位置。看起来每个线程都是通过这个方法工作的,然后在连续的递归调用中挂断......你们中的任何人都可以发现我的问题在哪里?Java - 循环的无限递归
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
嗯,这是如果不知道'List'包含什么数据就很难追踪。 – Lion
你的'System.out.println(...)'语句在哪里?那些你可以用来帮助调试你的问题? –
可能的(简单)清单将是 {[3.0,6.0,9.0, [3.0,7.5], [4.5,7.5], [4.5,9.0]} 我有System.out中的我最终,我认为我会从我之前发布的代码中拿走他们的代码,因为它会让事情变得混乱。如有必要,我可以发布。 – Aaron