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; } }
Laufendes Ergebnis:
ABC ACB BAC BCA CBA CAB
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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.

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.

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 ...

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.

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 man den Abstand von Span -Tags nach einer neuen Zeile im Webseitenlayout elegant umgeht.

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.

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 ...
