我有這樣一段代碼遞歸得到字符串的所有排列在一組:轉化這個遞歸進行迭代
public static List<List<String>> combinations(List<String> strings)
{
if (strings.size() > 1)
{
List<List<String>> result = new ArrayList<List<String>>();
for (String str : strings)
{
List<String> subStrings = new ArrayList<String>(strings);
subStrings.remove(str);
result.add(new ArrayList<String>(Arrays.asList(str)));
for (List<String> combos : combinations(subStrings))
{
combos.add(str);
result.add(combos);
}
}
return result;
}
else
{
List<List<String>> result = new ArrayList<List<String>>();
result.add(new ArrayList<String>(strings));
return result;
}
}
如果我的ArrayList中擁有太多的價值,它溢出堆棧。我從那以後就知道將算法從遞歸轉換爲迭代將幫助我解決這個內存問題,因爲我將在堆上自己處理堆棧,而不是使用本地堆棧。我從來沒有這樣做過,也無法將我的頭圍繞如何解決這個問題。我的問題並不像看到這種轉變的例子那麼簡單,所以我非常讚賞一些關於如何實現這一點的提示。
我建議你備份並嘗試在詞語中描述*以迭代算法中的步驟來解決相同的問題。如果您無法立即做到這一點,那麼請備份另一個步驟,並通過示例進行操作。 –
我不建議您調用類似於以下方法的變量組合:S很難理解 – nachokk
固定對於您 – sunrize920