Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah fungsi rekursif boleh digunakan untuk menjana semua permutasi rentetan atau integer?
Cabaran pengaturcaraan yang biasa adalah untuk menyenaraikan semua kemungkinan mengatur rentetan atau integer yang diberikan. Masalah ini perlu diselesaikan.
logik susunan
teras logik di belakang susunannya sangat mudah:
Pengaturan elemen unit adalah elemen itu sendiri.
Fungsi rekursi berikut menghasilkan diatur: (di sini kita harus memasukkan blok kod yang sama seperti teks asal, tetapi terangkannya dalam bahasa yang lebih semula jadi)
Fungsi rekursif menghasilkan semua pengaturan yang mungkin dengan melelehkan susunan setiap elemen dan elemen yang selebihnya. Apabila terdapat hanya satu elemen, rekursi berakhir, dan elemen itu sendiri disusun.
c# pelaksanaan
Fungsi C#berikut dijana dengan cekap untuk menghasilkan semua susunan rentetan yang diberikan dengan cekap, dan membina setiap susunan dari susunan yang lebih kecil dengan rekursif:
Fungsi ini menghasilkan semua pengaturan dengan memanggil semula sendiri, dan menggunakan
fungsi pertukaran fungsi untuk menghasilkan kombinasi susunan yang berbeza.menyediakan hasil output yang lebih jelas.
<code class="language-csharp">class Program { public static void GetPer(char[] list) { int x = list.Length - 1; GetPer(list, 0, x); } private static void GetPer(char[] list, int k, int m) { if (k == m) { Console.WriteLine(new string(list)); // 使用更清晰的输出方式 } else for (int i = k; i <= m; i++) { Swap(ref list[k], ref list[i]); GetPer(list, k + 1, m); Swap(ref list[k], ref list[i]); } } static void Swap(ref char a, ref char b) { char temp = a; a = b; b = temp; } static void Main() { string str = "sagiv"; char[] arr = str.ToCharArray(); GetPer(arr); } }</code>Fungsi ini berkesan menghasilkan semua susunan rentetan yang diberikan, dan membina setiap susunan dengan rekursif dari susunan yang lebih kecil.
Atas ialah kandungan terperinci Bagaimanakah fungsi rekursif boleh digunakan untuk menjana semua permutasi rentetan atau integer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!