Penjanaan Lelaran Semua Gabungan daripada Pelbagai Senarai menggunakan Rekursi dalam Java
Bayangkan senario di mana anda berhadapan dengan pelbagai senarai, masing-masing mempunyai panjang yang tidak didedahkan. Tugas anda adalah untuk menghasilkan senarai tunggal yang menggabungkan semua kemungkinan gabungan unik. Untuk menggambarkan, pertimbangkan senarai berikut:
X: [A, B, C] Y: [W, X, Y, Z]
Daripada senarai ini, anda seharusnya dapat menjana 12 kombinasi:
[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]
Jika senarai ketiga tambahan 3 elemen diperkenalkan, jumlah bilangan gabungan akan berkembang kepada 36.
Untuk mencapai penjanaan gabungan kompleks ini, rekursi muncul sebagai alat yang berkuasa:
<code class="java">void generatePermutations(List<List<Character>> lists, List<String> result, int depth, String current) { if (depth == lists.size()) { result.add(current); return; } for (int i = 0; i < lists.get(depth).size(); i++) { generatePermutations(lists, result, depth + 1, current + lists.get(depth).get(i)); } }</code>
Dalam algoritma rekursif yang direka dengan teliti ini, senarai parameter mewakili koleksi senarai input, dicirikan oleh kuantiti dan panjang yang tidak tentu. Senarai hasil berdiri sebagai repositori semua pilih atur yang dijana semasa proses. Kedalaman dan arus parameter memudahkan laluan senarai input dan pembinaan gabungan individu, masing-masing.
Seruan muktamad fungsi generatif ini mengatur keseluruhan proses:
<code class="java">generatePermutations(lists, result, 0, "");</code>
Melalui kerjasama harmoni rekursi dan Rangka Kerja Koleksi Java, algoritma ini memperkasakan anda untuk menghasilkan setiap kombinasi yang boleh dibayangkan dengan mudah daripada senarai senarai yang besar sewenang-wenangnya.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menjana semua kombinasi yang mungkin daripada berbilang senarai panjang yang tidak diketahui menggunakan rekursi dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!