A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yinzhenyu 初级黑马   /  2014-9-18 17:16  /  1028 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package digui;

  2. import java.util.ArrayList;

  3. public class DiGuiDemo {

  4.         /**
  5.          * @param args
  6.          */
  7.        
  8.     public static ArrayList<String> list = new ArrayList<String>();
  9.         public static void main(String[] args) {
  10.                 /*
  11.                  * 递归:(求ABCD全排列)
  12.                  * 函数自身直接或间接的调用自身
  13.                  * 一个功能在被重复使用,并每次使用时,参与运算的结果和上一次调用有关
  14.                  *
  15.                  * 注意:
  16.                  * 1.递归一定要明确条件,否则容易栈溢出
  17.                  * 2.注意递归的次数
  18.                  *
  19.                  * ????怎么打印递归的次数呢???
  20.                  *
  21.                  *
  22.                  */
  23.                 char[] str = {'A','B','C','D'};
  24.                 permutation(str,0,str.length-1);
  25.                

  26.         }
  27.           public static void permutation(char[] str,int begin,int end){
  28.                   
  29.                   if(begin == end){
  30.        
  31.                                         
  32.                   list.add(new String(str));
  33.                
  34.                   
  35.                   System.out.println(str);
  36.                   return;
  37.           }
  38.                   
  39.           for(int j=begin;j<=end;j++){
  40.                       //元素交换
  41.                   swap(str,begin,j);
  42.                   //递归调用
  43.                   permutation(str,begin + 1,end);
  44.                   //回溯
  45.                   swap(str,begin,j);
  46.           }
  47.          
  48.   }
  49.   //元素的交换
  50.   public static void swap(char[] str,int i,int j){
  51.          char temp = str[i];
  52.          str[i] = str[j];
  53.          str[j] = temp;
  54.   }

  55. }
复制代码

写了一个ABCD全排列的递归,但是想在输出排列的同时标明是第x中情况,求大神指导:)

3 个回复

倒序浏览
可以设定一个实例变量count,每次运行到if(begin == end)语句块时,count就加1
回复 使用道具 举报 1 0
在permutation中放一个计数器
每次++
把++后的计数器再次传入下一次permutation的调用
回复 使用道具 举报
全组合的我手里倒是有一个,递归java写的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马