Javaで再帰的配置を実装する方法

王林
リリース: 2019-11-27 17:04:02
転載
2024 人が閲覧しました

Javaで再帰的配置を実装する方法

再帰的配置

再帰的、通称「自分で調整する」は、データ構造の観点から理解すると、実際にはスタックです。

A、B、Cの配置を求めると、おおよそ次のような処理になります。

(0) 初期状態、スタックにデータなし。このとき、スタックの外側:A、B、C

(1) Aをスタックの一番下に置きます。このときスタック外:B、C

(2) Bをスタックに置きます。このときスタック外:C

(3) Cをスタックに置きます。このとき、スタック外:None、最初の配列ABC

を出力する (4) Cをスタックからポップする。このとき、スタックの外: C

(5) は B をスタックからポップします。このときスタック外:B、C

(6) Cをスタックに置きます。このときスタック外:B

(7) Bをスタックに置きます。このとき、スタック外:なし、2番目の配列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
ログイン後にコピー

Thisこの記事はJava Zero Basic Introductionが執筆したコラムです。ぜひ一緒に学び、コミュニケーションしてください。

以上がJavaで再帰的配置を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!