Heim Java JavaBase So implementieren Sie eine rekursive Anordnung in Java

So implementieren Sie eine rekursive Anordnung in Java

Nov 27, 2019 pm 05:04 PM
java 排列 递归

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!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Muss ich Flexbox in der Mitte des Bootstrap -Bildes verwenden? Muss ich Flexbox in der Mitte des Bootstrap -Bildes verwenden? Apr 07, 2025 am 09:06 AM

Es gibt viele Möglichkeiten, Bootstrap -Bilder zu zentrieren, und Sie müssen keine Flexbox verwenden. Wenn Sie nur horizontal zentrieren müssen, reicht die Text-Center-Klasse aus. Wenn Sie vertikal oder mehrere Elemente zentrieren müssen, ist Flexbox oder Grid besser geeignet. Flexbox ist weniger kompatibel und kann die Komplexität erhöhen, während das Netz leistungsfähiger ist und höhere Lernkosten hat. Bei der Auswahl einer Methode sollten Sie die Vor- und Nachteile abwägen und die am besten geeignete Methode entsprechend Ihren Anforderungen und Vorlieben auswählen.

Berechnung des C-Subscript 3-Index 5 C-Subscript 3-Index 5-Algorithmus-Tutorial Berechnung des C-Subscript 3-Index 5 C-Subscript 3-Index 5-Algorithmus-Tutorial Apr 03, 2025 pm 10:33 PM

Die Berechnung von C35 ist im Wesentlichen kombinatorische Mathematik, die die Anzahl der aus 3 von 5 Elementen ausgewählten Kombinationen darstellt. Die Berechnungsformel lautet C53 = 5! / (3! * 2!), Was direkt durch Schleifen berechnet werden kann, um die Effizienz zu verbessern und Überlauf zu vermeiden. Darüber hinaus ist das Verständnis der Art von Kombinationen und Beherrschen effizienter Berechnungsmethoden von entscheidender Bedeutung, um viele Probleme in den Bereichen Wahrscheinlichkeitsstatistik, Kryptographie, Algorithmus -Design usw. zu lösen.

Wie kann man adaptives Layout der Y-Achse-Position in Webanmerkungen implementieren? Wie kann man adaptives Layout der Y-Achse-Position in Webanmerkungen implementieren? Apr 04, 2025 pm 11:30 PM

Der ad-axis-Position adaptive Algorithmus für Webanmerkungen In diesem Artikel wird untersucht, wie Annotationsfunktionen ähnlich wie Word-Dokumente implementiert werden, insbesondere wie man mit dem Intervall zwischen Anmerkungen umgeht ...

Unterschiedliche Funktionsnutzungsabstand Funktion C -Verwendung Tutorial Unterschiedliche Funktionsnutzungsabstand Funktion C -Verwendung Tutorial Apr 03, 2025 pm 10:27 PM

STD :: Einzigartige Entfernung benachbarte doppelte Elemente im Container und bewegt sie bis zum Ende, wodurch ein Iterator auf das erste doppelte Element zeigt. STD :: Distanz berechnet den Abstand zwischen zwei Iteratoren, dh die Anzahl der Elemente, auf die sie hinweisen. Diese beiden Funktionen sind nützlich, um den Code zu optimieren und die Effizienz zu verbessern, aber es gibt auch einige Fallstricke, auf die geachtet werden muss, wie z. STD :: Distanz ist im Umgang mit nicht randomischen Zugriffs-Iteratoren weniger effizient. Indem Sie diese Funktionen und Best Practices beherrschen, können Sie die Leistung dieser beiden Funktionen voll ausnutzen.

Welcher der zehn besten Apps für virtuelle Währung ist die besten? Welcher der zehn besten Apps für virtuelle Währung ist die besten? Mar 19, 2025 pm 05:00 PM

Top 10 Apps Rankings von Virtual Currency Trading: 1. OKX, 2. Binance, 3. Gate.io, 4. Kraken, 5. Huobi, 6. Coinbase, 7. Kucoin, 8. Crypto.com, 9. Bitfinex, 10. Gemini. Sicherheit, Liquidität, Handhabungsgebühren, Währungsauswahl, Benutzeroberfläche und Kundenbetreuung sollten bei der Auswahl einer Plattform berücksichtigt werden.

Wie kann man das Problem des zu kleinen Abstands von Spannweiten -Tags nach einer Linienpause elegant lösen? Wie kann man das Problem des zu kleinen Abstands von Spannweiten -Tags nach einer Linienpause elegant lösen? Apr 05, 2025 pm 06:00 PM

Wie man den Abstand von Span -Tags nach einer neuen Zeile im Webseitenlayout elegant umgeht.

PHP vs. Python: Verständnis der Unterschiede PHP vs. Python: Verständnis der Unterschiede Apr 11, 2025 am 12:15 AM

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

So implementieren Sie Sortieren und fügen Ranglisten in zweidimensionalen PHP-Arrays hinzu? So implementieren Sie Sortieren und fügen Ranglisten in zweidimensionalen PHP-Arrays hinzu? Apr 01, 2025 am 07:00 AM

Detaillierte Erläuterung der zweidimensionalen Sortier- und Ranking-Implementierung von PHP-PHP In diesem Artikel wird ausführlich erläutert, wie ein zweidimensionales PHP-Array sortiert und jedes Sub-Array gemäß den Sortierergebnissen verwendet wird ...

See all articles