【发布时间】:2015-12-27 19:36:52
【问题描述】:
我正在尝试理解为给定输入字符串编写排列的代码。
例如:输入字符串:123,输出:123,132,213,231,312,321。
下面粘贴的代码 sn-p 就是这样做的。
public static void main(String args[]) {
permuteString("", "123");
}
public static void permuteString(String beginningString, String endingString) {
if (endingString.length() <= 1)
System.out.println(beginningString + endingString);
else
for (int i = 0; i < endingString.length(); i++) {
try {
// System.out.println(i);
String newString = endingString.substring(0, i) + endingString.substring(i + 1);
permuteString(beginningString + endingString.charAt(i), newString);
} catch (StringIndexOutOfBoundsException exception) {
exception.printStackTrace();
}
}
我对整数 'i' 何时在 for 循环中递增(即从 i=0 to 1. 递增)感到非常困惑
我从第一次迭代中了解到的一件事是'i' 在达到基本情况时递增到 1,即
if (endingString.length() <= 1)
System.out.println(beginningString + endingString);
我尝试进一步调试,我的值不断在 0 和 1 之间变化,以进行我无法理解的连续迭代。
总结一下,
我对"for loop"和第一次迭代后try块中的两条指令之间的关系感到困惑。
如果有人能指导我完成整个过程,我会很高兴。
【问题讨论】:
标签: java string loops recursion permutation