問題是生成字典排列。Java中的遞歸排列生成錯誤結果
起初,我的代碼是這樣的:
public class Problem24 {
public static void main(String[] args) {
permutation("","123");
}
public static void permutation(String prefix, String numbers) {
if (numbers.length() == 0) {
System.out.println(prefix);
} else {
for (int i = 0; i < numbers.length(); i++) {
prefix = prefix + numbers.charAt(i);
permutation(prefix,numbers.substring(0, i)+numbers.substring(i+1));
}
}
}
}
結果:
123
1232
1213
12131
12312
123121
當我改變了這兩條線從
prefix = prefix + numbers.charAt(i);
permutation(prefix,numbers.substring(0, i)+numbers.substring(i+1));
到:
permutation(prefix + numbers.charAt(i),numbers.substring(0, i)+numbers.substring(i+1));
結果變得正確。
這兩種方式似乎與我相當。有人可以解釋什麼是不同的,爲什麼第一個會產生錯誤的結果。
感謝
感謝,所以傳遞的值確實是一樣的,但我忘了我是用在for循環prefix'的'值。 – AntonZ
@AntonZ ya,希望更新後的表格看起來很清楚爲什麼錯誤結果看起來像這樣。 –
可視化完全清除雲。謝謝! – AntonZ