黑马程序员技术交流社区
标题:
递归的计数问题
[打印本页]
作者:
yinzhenyu
时间:
2014-9-18 17:16
标题:
递归的计数问题
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中情况,求大神指导:)
作者:
fantacyleo
时间:
2014-9-18 18:28
可以设定一个实例变量count,每次运行到if(begin == end)语句块时,count就加1
作者:
郑飞
时间:
2014-9-18 19:22
在permutation中放一个计数器
每次++
把++后的计数器再次传入下一次permutation的调用
作者:
十万一千
时间:
2014-9-18 19:56
全组合的我手里倒是有一个,递归java写的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2