我试图返回字符串数组中值的所有可能的排列组合。我已经提出了以下代码,使所有可能的排列组合;它工作正常。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
是的,只是从递归例程中返回数据。您可以返回一个常规的'[]'数组,或者其中一个集合类,后者在您从每个级别返回时都可以添加到其中。 –