Home Java JavaBase How to implement recursive arrangement in java

How to implement recursive arrangement in java

Nov 27, 2019 pm 05:04 PM
java arrangement recursion

How to implement recursive arrangement in java

Recursive arrangement

Recursive, commonly known as "I adjust myself", if understood from the perspective of data structure, it is actually a stack.

If we ask for the arrangement of A, B, and C, the process is roughly as follows:

(0) Initial state, no data in the stack. At this time, outside the stack: A, B, C

(1) Put A at the bottom of the stack. At this time, outside the stack: B, C

(2) Put B into the stack. At this time, outside the stack: C

(3) Put C into the stack. At this time, outside the stack: None, output the first arrangement ABC

(4) Pop C off the stack. At this time, outside the stack: C

(5) pops B off the stack. At this time, outside the stack: B, C

(6) Put C into the stack. At this time, outside the stack: B

(7) Put B into the stack. At this time, outside the stack: None, output the second arrangement ACB

, then pop back the stack in sequence, return to the initial state, then put B at the bottom of the stack, and repeat the action to get all arrangements.

Free video tutorial recommendation: java video tutorial

The example is as follows:

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;
    }
}
Copy after login

Running result:

ABC
ACB
BAC
BCA
CBA
CAB
Copy after login

This article is written by java Zero Basic Introduction column recommendation, everyone is welcome to learn and communicate together!

The above is the detailed content of How to implement recursive arrangement in java. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Do I need to use flexbox in the center of the Bootstrap picture? Do I need to use flexbox in the center of the Bootstrap picture? Apr 07, 2025 am 09:06 AM

There are many ways to center Bootstrap pictures, and you don’t have to use Flexbox. If you only need to center horizontally, the text-center class is enough; if you need to center vertically or multiple elements, Flexbox or Grid is more suitable. Flexbox is less compatible and may increase complexity, while Grid is more powerful and has a higher learning cost. When choosing a method, you should weigh the pros and cons and choose the most suitable method according to your needs and preferences.

How to calculate c-subscript 3 subscript 5 c-subscript 3 subscript 5 algorithm tutorial How to calculate c-subscript 3 subscript 5 c-subscript 3 subscript 5 algorithm tutorial Apr 03, 2025 pm 10:33 PM

The calculation of C35 is essentially combinatorial mathematics, representing the number of combinations selected from 3 of 5 elements. The calculation formula is C53 = 5! / (3! * 2!), which can be directly calculated by loops to improve efficiency and avoid overflow. In addition, understanding the nature of combinations and mastering efficient calculation methods is crucial to solving many problems in the fields of probability statistics, cryptography, algorithm design, etc.

How to implement adaptive layout of Y-axis position in web annotation? How to implement adaptive layout of Y-axis position in web annotation? Apr 04, 2025 pm 11:30 PM

The Y-axis position adaptive algorithm for web annotation function This article will explore how to implement annotation functions similar to Word documents, especially how to deal with the interval between annotations...

distinct function usage distance function c usage tutorial distinct function usage distance function c usage tutorial Apr 03, 2025 pm 10:27 PM

std::unique removes adjacent duplicate elements in the container and moves them to the end, returning an iterator pointing to the first duplicate element. std::distance calculates the distance between two iterators, that is, the number of elements they point to. These two functions are useful for optimizing code and improving efficiency, but there are also some pitfalls to be paid attention to, such as: std::unique only deals with adjacent duplicate elements. std::distance is less efficient when dealing with non-random access iterators. By mastering these features and best practices, you can fully utilize the power of these two functions.

Which of the top ten virtual currency trading apps is the best? Which of the top ten virtual currency trading apps is the most reliable Which of the top ten virtual currency trading apps is the best? Which of the top ten virtual currency trading apps is the most reliable Mar 19, 2025 pm 05:00 PM

Top 10 virtual currency trading apps rankings: 1. OKX, 2. Binance, 3. Gate.io, 4. Kraken, 5. Huobi, 6. Coinbase, 7. KuCoin, 8. Crypto.com, 9. Bitfinex, 10. Gemini. Security, liquidity, handling fees, currency selection, user interface and customer support should be considered when choosing a platform.

How to elegantly solve the problem of too small spacing of Span tags after a line break? How to elegantly solve the problem of too small spacing of Span tags after a line break? Apr 05, 2025 pm 06:00 PM

How to elegantly handle the spacing of Span tags after a new line In web page layout, you often encounter the need to arrange multiple spans horizontally...

How to implement sorting and add rankings in PHP two-dimensional arrays? How to implement sorting and add rankings in PHP two-dimensional arrays? Apr 01, 2025 am 07:00 AM

Detailed explanation of PHP two-dimensional array sorting and ranking implementation This article will explain in detail how to sort a PHP two-dimensional array and use each sub-array according to the sorting results...

PHP vs. Python: Understanding the Differences PHP vs. Python: Understanding the Differences Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

See all articles