Java递归生成字符串-所有1,然后是1和0

Java递归生成字符串-所有1,然后是1和0,java,string,recursion,arraylist,Java,String,Recursion,Arraylist,嘿,伙计们,我试图通过制作一个程序,递归地生成ArrayList的String,来理解递归的概念。我的基本算法是: public static ArrayList<String> generateListOfAll1sStrings(int maxBits) 但是,目前,我返回一个IndexOutOfBoundsException。我认为是我的for循环导致了这个问题,但我不确定如何着手解决它。在这一行listofJust1.add(I,(string+“1”) 这是因为方法lis

嘿,伙计们,我试图通过制作一个程序,递归地生成
ArrayList的
String
,来理解递归的概念。我的基本算法是:

public static ArrayList<String> generateListOfAll1sStrings(int maxBits)

但是,目前,我返回一个
IndexOutOfBoundsException
。我认为是我的for循环导致了这个问题,但我不确定如何着手解决它。

在这一行
listofJust1.add(I,(string+“1”)

这是因为方法list.add(index,objects)试图在索引“1”处添加对象,但数组中有0个元素

或者将其更改为
listofJust1.add(i-1,(string+“1”)或简单地
listofJust1.add((字符串+“1”)

@编辑:此处:

listofJust1.add(i, (string + "1"));
您希望为当前(N)级递归添加字符串,但在下面用以下内容替换此数组:

listofJust1 = BinaryCombinationGenerator.generateListOfAll1sStrings((maxBits-1));
它基本上是说“获取(maxBits-1)的结果并替换为它listofJust1”,因此您丢失了之前添加的内容

相反,您应该首先获取级别N-1的列表,然后添加当前级别的字符串:

listofJust1 = BinaryCombinationGenerator.generateListOfAll1sStrings((maxBits-1));
listofJust1.add(stringForThisLevel);

此外,您还需要重新尝试在N级计算“字符串”的方式,这似乎不正确。

哪一行抛出异常IstofJust1.add(i,(string+“1”))当然还有我的主要方法行generateListOfAll1sString(10);string=comp,这里的字符串变量是什么?我接受了您的建议,将其更改为listofJust1.add((string+“1”)),得到了一个输出,一个包含9个元素的ArrayList,其中只有[1]个元素。程序应该在最后一次结束时每次添加1,在这种情况下,应该是10,所以:[1][11][111][1111][11111][111111][1111111111][11111111][11111111111][1111111111]我尝试通过使用+“1”来添加。怎样才能做到不同呢?@Dan no it“printed”9x[1]。结果列表只有1个元素[1],因为在每个递归级别,您都在创建一个包含1个元素的新列表,并将其返回到递归树中。@Dan没问题!递归相当困难,但不要犹豫,当你擅长递归时,它会让人惊讶:-)
listofJust1 = BinaryCombinationGenerator.generateListOfAll1sStrings((maxBits-1));
listofJust1.add(stringForThisLevel);