遞歸排列
遞歸,俗稱“我 調 我 自 己”,如果從資料結構的角度來理解,其實就是棧。
假如我們要求得到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零基礎入門專欄推薦,歡迎大家一起來共同學習交流!
以上是java中如何實現遞歸排列的詳細內容。更多資訊請關注PHP中文網其他相關文章!
陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
刺客信條陰影:貝殼謎語解決方案
3 週前ByDDD
Windows 11 KB5054979中的新功能以及如何解決更新問題
2 週前ByDDD
在哪裡可以找到原子中的起重機控制鑰匙卡
3 週前ByDDD
<🎜>:死鐵路 - 如何完成所有挑戰
4 週前ByDDD
Atomfall指南:項目位置,任務指南和技巧
1 個月前ByDDD

熱工具

SublimeText3漢化版
中文版,非常好用

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),