嘿傢伙我試圖通過遞歸生成遞歸的程序來獲得遞歸的概念。我的基本算法是:Java遞歸地生成字符串 - 全1然後1和0
public static ArrayList<String> generateListOfAll1sStrings(int maxBits)
終端條件:如果maxBits是1,回到最簡單的情況:包含列表只是 「1」
否則: 遞歸調用generateListOfAll1sStrings()
的下一步 - 保存返回的列表 找到該列表中最長的字符串,並創建一個新的字符串並附加「1」(使下一個最長字符串) 返回一個新列表,其中包含所有元素較短的列表以及新的字符串噸補充。
我到目前爲止的代碼是:
package bincomb.model;
import java.util.ArrayList;
public class BinaryCombinationGenerator {
public static ArrayList<String> generateListOfAll1sStrings(int maxBits) {
String string = null;
ArrayList<String> listofJust1 = new ArrayList<String>();
ArrayList<String> otherArray = new ArrayList<String>();
int i = 1;
if (maxBits == 1) {
listofJust1.add("1");
return listofJust1;
}
if (maxBits > 1) {
for (String string2 : listofJust1) {
String comp = "";
if (!(comp.equals(string2))) {
comp = string2;
}
string = comp;
}
listofJust1.add(i, (string + "1"));
i++;
listofJust1 = BinaryCombinationGenerator.generateListOfAll1sStrings((maxBits-1));
System.out.println(listofJust1);
return listofJust1;
}
return listofJust1;
}
public static void main(String[] args) {
generateListOfAll1sStrings(10);
}
}
然而,目前,我正在返回一個IndexOutOfBoundsException
。我認爲我的for循環導致了這個問題,但我不確定如何去修復它。
什麼行引發異常 – Taylor
listofJust1.add(i,(string +「1」)),當然我的主要方法行generateListOfAll1sString(10); – Ashton
string = comp,這裏是什麼字符串變量? –