Maison Java JavaBase Comment implémenter un arrangement récursif en Java

Comment implémenter un arrangement récursif en Java

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

Comment implémenter un arrangement récursif en Java

Arrangement récursif

La récursion, communément appelée "Je m'ajuste", si elle est comprise du point de vue de la structure des données, il s'agit en fait d'une pile.

Si nous demandons la disposition de A, B et C, le processus est à peu près le suivant :

(0) État initial, aucune donnée dans la pile. A ce moment, en dehors de la pile : A, B, C

(1) Mettre A en bas de la pile. A ce moment, en dehors de la pile : B, C

(2) Mettez B dans la pile. A ce moment, en dehors de la pile : C

(3) Mettez C dans la pile. A ce moment, en dehors de la pile : Aucun, sortez le premier arrangement ABC

(4) Retirez C de la pile. A ce moment, en dehors de la pile : C

(5) Sortez B de la pile. A ce moment, en dehors de la pile : B, C

(6) Mettez C dans la pile. A ce moment, en dehors de la pile : B

(7) Mettez B dans la pile. A ce moment, en dehors de la pile : Aucun, sortez le deuxième arrangement ACB

, puis retirez la pile en séquence, revenez à l'état initial, puis mettez B au bas de la pile. pour prendre toutes les dispositions.

Recommandation de didacticiel vidéo gratuit : Tutoriel vidéo Java

L'exemple est le suivant :

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;
    }
}
Copier après la connexion

Résultat d'exécution :

ABC
ACB
BAC
BCA
CBA
CAB
Copier après la connexion

Ceci L'article est écrit par Getting Started with Java Basics Recommandation de la colonne, tout le monde est invité à apprendre et à communiquer ensemble !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dois-je utiliser Flexbox au centre de l'image bootstrap? Dois-je utiliser Flexbox au centre de l'image bootstrap? Apr 07, 2025 am 09:06 AM

Il existe de nombreuses façons de centrer des photos de bootstrap, et vous n'avez pas à utiliser Flexbox. Si vous avez seulement besoin de centrer horizontalement, la classe de cent texte est suffisante; Si vous devez centrer verticalement ou plusieurs éléments, Flexbox ou Grid convient plus. Flexbox est moins compatible et peut augmenter la complexité, tandis que Grid est plus puissant et a un coût d'enseignement supérieur. Lorsque vous choisissez une méthode, vous devez peser les avantages et les inconvénients et choisir la méthode la plus appropriée en fonction de vos besoins et préférences.

Comment calculer C-SUBScript 3 Indice 5 C-SUBScript 3 Indice Indice 5 Tutoriel d'algorithme Comment calculer C-SUBScript 3 Indice 5 C-SUBScript 3 Indice Indice 5 Tutoriel d'algorithme Apr 03, 2025 pm 10:33 PM

Le calcul de C35 est essentiellement des mathématiques combinatoires, représentant le nombre de combinaisons sélectionnées parmi 3 des 5 éléments. La formule de calcul est C53 = 5! / (3! * 2!), Qui peut être directement calculé par des boucles pour améliorer l'efficacité et éviter le débordement. De plus, la compréhension de la nature des combinaisons et la maîtrise des méthodes de calcul efficaces est cruciale pour résoudre de nombreux problèmes dans les domaines des statistiques de probabilité, de la cryptographie, de la conception d'algorithmes, etc.

Comment implémenter la disposition adaptative de la position de l'axe y dans l'annotation Web? Comment implémenter la disposition adaptative de la position de l'axe y dans l'annotation Web? Apr 04, 2025 pm 11:30 PM

L'algorithme adaptatif de la position de l'axe y pour la fonction d'annotation Web Cet article explorera comment implémenter des fonctions d'annotation similaires aux documents de mots, en particulier comment gérer l'intervalle entre les annotations ...

Fonction de fonction distincte Distance de distance C Tutoriel d'utilisation Fonction de fonction distincte Distance de distance C Tutoriel d'utilisation Apr 03, 2025 pm 10:27 PM

STD :: Unique supprime les éléments en double adjacents dans le conteneur et les déplace jusqu'à la fin, renvoyant un itérateur pointant vers le premier élément en double. STD :: Distance calcule la distance entre deux itérateurs, c'est-à-dire le nombre d'éléments auxquels ils pointent. Ces deux fonctions sont utiles pour optimiser le code et améliorer l'efficacité, mais il y a aussi quelques pièges à prêter attention, tels que: std :: unique traite uniquement des éléments en double adjacents. STD :: La distance est moins efficace lorsqu'il s'agit de transacteurs d'accès non aléatoires. En maîtrisant ces fonctionnalités et les meilleures pratiques, vous pouvez utiliser pleinement la puissance de ces deux fonctions.

Laquelle des dix principales applications de trading de devises virtuelles est la meilleure? Laquelle des dix principales applications de trading de devises virtuelles est la meilleure? Mar 19, 2025 pm 05:00 PM

Top 10 des classements de trading de devises virtuels: 1. Okx, 2. Binance, 3. Gate.io, 4. Kraken, 5. Huobi, 6. Coinbase, 7. Kucoin, 8. Crypto.com, 9. BitFinex, 10. Gemini. La sécurité, la liquidité, les frais de traitement, la sélection des devises, l'interface utilisateur et le support client doivent être pris en compte lors du choix d'une plate-forme.

Comment résoudre élégamment le problème d'un espacement trop petit des étiquettes de portée après une pause de ligne? Comment résoudre élégamment le problème d'un espacement trop petit des étiquettes de portée après une pause de ligne? Apr 05, 2025 pm 06:00 PM

Comment gérer avec élégance l'espacement des balises Span après une nouvelle ligne dans la disposition des pages Web, vous rencontrez souvent la nécessité d'organiser plusieurs travées horizontalement ...

PHP vs Python: comprendre les différences PHP vs Python: comprendre les différences Apr 11, 2025 am 12:15 AM

PHP et Python ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1.Php convient au développement Web, avec une syntaxe simple et une efficacité d'exécution élevée. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et des bibliothèques riches.

Comment implémenter le tri et ajouter des classements dans des tableaux bidimensionnels PHP? Comment implémenter le tri et ajouter des classements dans des tableaux bidimensionnels PHP? Apr 01, 2025 am 07:00 AM

Explication détaillée du tri et de la mise en œuvre du tableau bidimensionnel PHP Cet article expliquera en détail comment trier un tableau bidimensionnel PHP et utiliser chaque sous-tableau en fonction des résultats de tri ...

See all articles