Heim > Java > JavaBase > Hauptteil

So implementieren Sie eine rekursive Anordnung in Java

王林
Freigeben: 2019-11-27 17:04:02
nach vorne
2060 Leute haben es durchsucht

So implementieren Sie eine rekursive Anordnung in Java

Rekursive Anordnung

Rekursion, allgemein bekannt als „Ich passe mich an“. Wenn man sie aus der Perspektive der Datenstruktur versteht, handelt es sich tatsächlich um einen Stapel.

Wenn wir nach der Anordnung von A, B und C fragen, ist der Prozess ungefähr wie folgt:

(0) Ausgangszustand, keine Daten im Stapel. Zu diesem Zeitpunkt außerhalb des Stapels: A, B, C

(1) Legen Sie A unten auf den Stapel. Zu diesem Zeitpunkt außerhalb des Stapels: B, C

(2) Legen Sie B in den Stapel. Zu diesem Zeitpunkt außerhalb des Stapels: C

(3) Legen Sie C in den Stapel. Zu diesem Zeitpunkt außerhalb des Stapels: Keine, geben Sie die erste Anordnung ABC aus

(4) Entfernen Sie C vom Stapel. Zu diesem Zeitpunkt außerhalb des Stapels: C

(5) Nehmen Sie B vom Stapel. Zu diesem Zeitpunkt außerhalb des Stapels: B, C

(6) Legen Sie C in den Stapel. Zu diesem Zeitpunkt außerhalb des Stapels: B

(7) Legen Sie B in den Stapel. Zu diesem Zeitpunkt außerhalb des Stapels: Keine, geben Sie die zweite Anordnung ACB aus

, klappen Sie dann den Stapel zurück, kehren Sie in den Ausgangszustand zurück und legen Sie dann B am Ende des Stapels ab. Wiederholen Sie die Aktion, um sie zu erhalten alle Arrangements.

Empfehlung für ein kostenloses Video-Tutorial: Java-Video-Tutorial

Das Beispiel sieht wie folgt aus:

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;
    }
}
Nach dem Login kopieren

Laufendes Ergebnis:

ABC
ACB
BAC
BCA
CBA
CAB
Nach dem Login kopieren

Dies Artikel wurde geschrieben von Einführung in Java mit Zero Basics Empfohlene Kolumne, jeder ist herzlich willkommen, gemeinsam zu lernen und zu kommunizieren!

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine rekursive Anordnung in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!