gpt4 book ai didi

java - 帮助完成排列类

转载 作者:行者123 更新时间:2023-11-30 05:08:03 26 4
gpt4 key购买 nike

我创建了一个类,用于用树计算整数的排列:

 public class Permut {

ArrayList<Integer> list = new ArrayList<Integer>();
public static void main(String args[])
{
ArrayList<Integer> t = new ArrayList<Integer>();
t.add(1);
t.add(2);
t.add(3);
Permut permutation = new Permut();
permutation.permutation(t);
}
public ArrayList<List> permutation(ArrayList<Integer> array)
{
Node node = new Node(); //root
node.data = -1;
node.depth = 1;
Node parent = node;

permut(parent,array,node.depth);


return null;

}
private void permut(Node parent, ArrayList<Integer> array, int i) {
// TODO Auto-generated method stub
ArrayList<Integer> noNumbers = new ArrayList<Integer>();
for (Integer in : array) {
if(!noNumbers.contains(in) || !parent.noList.contains(in)|| i<array.size())
{
Node no = new Node();
no.data = in;
no.parent = parent;
no.depth = i+1;
no.noList.add(in);
noNumbers.add(in);
permut(no,array,no.depth);
}

}


}
}

我的程序还有一个节点类,每个节点都有数据、父节点、深度,还有一个 nList,保存其父节点和祖父节点的所有数据......我想通过读取从根到每个叶子的数据来进行排列。但是这段代码会导致 java.lang.StackOverflowError在行

  for (Integer in : array) {  

我怎样才能完成我的代码?请您指导一下吗?谢谢

最佳答案

由于 noNumbers 是新初始化的 ArrayList,因此出现堆栈溢出。创建后立即检查它是否不包含“in”

 ArrayList<Integer> noNumbers = new ArrayList<Integer>();
for (Integer in : array) {
if(!noNumbers.contains(in) || !parent.noList.contains(in)|| i<array.size())
{

这将永远运行,因为每个新级别的 noNumbers 在其第一次迭代中不会包含任何内容。

关于java - 帮助完成排列类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4424420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com