java中如何实现递归排列
递归排列
递归,俗称“我 调 我 自 己”,如果从数据结构的角度来理解,其实就是栈。
假如我们要求得到A、B、C的排列,流程大概如下:
(0)初始状态,栈内无数据。此时栈外:A、B、C
(1)将A放入栈底。此时栈外:B、C
(2)将B放入栈中。此时栈外:C
(3)将C放入栈中。此时栈外:无,输出第一种排列ABC
(4)将C退栈。此时栈外:C
(5)将B退栈。此时栈外:B、C
(6)将C放入栈中。此时栈外:B
(7)将B放入栈中。此时栈外:无,输出第二种排列ACB
之后依次退栈,回归初始状态,再将B放入栈底,重复动作,即可得到所有排列。
免费视频教程推荐:java视频教程
示例如下:
public class demo{ public static void main(String[] args) { char buf[]={'A','B','C'}; //定义待排列数组 perm(buf,0,buf.length-1); } public static void perm(char[] buf,int start,int end){ if(start==end){//入栈结束条件,执行完该判断语句后开始逐步出栈 for(int i=0;i<=end;i++){ System.out.print(buf[i]); } System.out.println(); } else{//递归正体 for(int i=start;i<=end;i++){//控制入栈数据 exchange(buf,start,i);//入栈操作 perm(buf,start+1,end);//递归,对下一个数据执行出入栈操作 exchange(buf,start,i);//出栈操作 } } } public static void exchange(char[] c,int x,int y){ //交换数组中的数据,在栈里的表现就是入栈和出栈 char temp=c[x]; c[x]=c[y]; c[y]=temp; } }
运行结果:
ABC ACB BAC BCA CBA CAB
本文由java零基础入门栏目推荐,欢迎大家一起来共同学习交流!
Atas ialah kandungan terperinci java中如何实现递归排列. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Terdapat banyak cara untuk memusatkan gambar bootstrap, dan anda tidak perlu menggunakan Flexbox. Jika anda hanya perlu berpusat secara mendatar, kelas pusat teks sudah cukup; Jika anda perlu memusatkan elemen secara menegak atau berganda, Flexbox atau Grid lebih sesuai. Flexbox kurang serasi dan boleh meningkatkan kerumitan, manakala grid lebih berkuasa dan mempunyai kos pengajian yang lebih tinggi. Apabila memilih kaedah, anda harus menimbang kebaikan dan keburukan dan memilih kaedah yang paling sesuai mengikut keperluan dan keutamaan anda.

Pengiraan C35 pada dasarnya adalah matematik gabungan, yang mewakili bilangan kombinasi yang dipilih dari 3 dari 5 elemen. Formula pengiraan ialah C53 = 5! / (3! * 2!), Yang boleh dikira secara langsung oleh gelung untuk meningkatkan kecekapan dan mengelakkan limpahan. Di samping itu, memahami sifat kombinasi dan menguasai kaedah pengiraan yang cekap adalah penting untuk menyelesaikan banyak masalah dalam bidang statistik kebarangkalian, kriptografi, reka bentuk algoritma, dll.

Algoritma Adaptif Kedudukan Y-Axis untuk Fungsi Anotasi Web Artikel ini akan meneroka cara melaksanakan fungsi anotasi yang serupa dengan dokumen perkataan, terutama bagaimana menangani selang antara anotasi ...

STD :: Unik menghilangkan elemen pendua bersebelahan di dalam bekas dan menggerakkannya ke akhir, mengembalikan iterator yang menunjuk ke elemen pendua pertama. STD :: Jarak mengira jarak antara dua iterators, iaitu bilangan elemen yang mereka maksudkan. Kedua -dua fungsi ini berguna untuk mengoptimumkan kod dan meningkatkan kecekapan, tetapi terdapat juga beberapa perangkap yang perlu diberi perhatian, seperti: STD :: Unik hanya berkaitan dengan unsur -unsur pendua yang bersebelahan. STD :: Jarak kurang cekap apabila berurusan dengan Iterator Akses Bukan Rawak. Dengan menguasai ciri -ciri dan amalan terbaik ini, anda boleh menggunakan sepenuhnya kuasa kedua -dua fungsi ini.

10 Perdagangan Perdagangan Mata Wang Maya Top: 1. Okx, 2. Binance, 3. Gate.io, 4. Kraken, 5. Huobi, 6 Coinbase, 7. Kucoin, 8 crypto.com, 9. Bitfinex, 10. Keselamatan, kecairan, yuran pengendalian, pemilihan mata wang, antara muka pengguna dan sokongan pelanggan harus dipertimbangkan ketika memilih platform.

Cara dengan elegan mengendalikan jarak tag span selepas garis baru dalam susun atur laman web, anda sering memenuhi keperluan untuk mengatur pelbagai rentang secara mendatar ...

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

Penjelasan terperinci mengenai pelaksanaan penyortiran dan ranking pelbagai dimensi PHP Artikel ini akan menerangkan secara terperinci bagaimana untuk menyusun array dua dimensi PHP dan menggunakan setiap sub-array mengikut hasil penyortiran ...
