早上刷微博的時候看到用程序輸入全排列,一想發現自己沒寫過,不會,查資料吧。
百度百科上的解釋,總結一下就是將當前的Index與後面的Index依次替換,直到結束!
//將數組中指定的下標交換位置 private static void 交換(char[] charlist, int left, int right) { var m = charlist[left]; charlist[left] = charlist[right]; charlist[right] = m; } private static void 遞歸(char[] charlist, int index, int length) { if (index == length - 1) //當訪問到列表的最後時將當前的順序輸出 { for (int i = 0; i < charlist.Length; i++) { Console.Write(charlist[i]); } Console.WriteLine(); } else { //訪問列表 for (int i = index; i < length; i++) { if (i != index) { 交換(charlist, index, i); } 遞歸(charlist, index + 1, length); if (i != index) { 交換(charlist, index, i); } } } }