- package digui;
- import java.util.ArrayList;
- public class DiGuiDemo {
- /**
- * @param args
- */
-
- public static ArrayList<String> list = new ArrayList<String>();
- public static void main(String[] args) {
- /*
- * 递归:(求ABCD全排列)
- * 函数自身直接或间接的调用自身
- * 一个功能在被重复使用,并每次使用时,参与运算的结果和上一次调用有关
- *
- * 注意:
- * 1.递归一定要明确条件,否则容易栈溢出
- * 2.注意递归的次数
- *
- * ????怎么打印递归的次数呢???
- *
- *
- */
- char[] str = {'A','B','C','D'};
- permutation(str,0,str.length-1);
-
- }
- public static void permutation(char[] str,int begin,int end){
-
- if(begin == end){
-
-
- list.add(new String(str));
-
-
- System.out.println(str);
- return;
- }
-
- for(int j=begin;j<=end;j++){
- //元素交换
- swap(str,begin,j);
- //递归调用
- permutation(str,begin + 1,end);
- //回溯
- swap(str,begin,j);
- }
-
- }
- //元素的交换
- public static void swap(char[] str,int i,int j){
- char temp = str[i];
- str[i] = str[j];
- str[j] = temp;
- }
- }
复制代码
写了一个ABCD全排列的递归,但是想在输出排列的同时标明是第x中情况,求大神指导:)
|
|