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

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



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.

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.

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

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.

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 handle the spacing of Span tags after a new line In web page layout, you often encounter the need to arrange multiple spans horizontally...

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