我試圖返回字符串數組中值的所有可能的排列組合。我已經提出了以下代碼,使所有可能的排列組合;它工作正常。Java - 從遞歸函數返回
private void combineArray(String sPrefix, String[] sInput, int iLength) {
if (iLength == sPrefix.length()) {
//This value should be returned and concatenated:
System.out.println(sPrefix);
} else {
for (int i=0; i<sInput.length; i++) {
combineArray(sPrefix.concat(sInput[i]), ArrayUtils.removeElement(sInput, sInput[i]), iLength);
}
}
}
如果我把{X,Y,Z}它打印到控制檯:
xyz
xzy
yxz
yzx
zxy
zyx
我的問題是,我不能找到一種方法將這些值恢復到原來的呼叫功能。所以我希望這個函數不返回'void',而是返回一個包含sPrefix連接值的'String'。
我一直在努力這一段時間,現在我似乎無法再看清楚了。 :) 任何幫助,將不勝感激。
爲什麼不返回所有列表字符串組合添加?更好,不是嗎? – thatidiotguy
只是拋出想法,但是你可以在每次迭代過程中改變外部數組,還是返回可以通過每個遞歸級別返回的值數組? – Xiphos
是的,只是從遞歸例程中返回數據。您可以返回一個常規的'[]'數組,或者其中一個集合類,後者在您從每個級別返回時都可以添加到其中。 –