java中的递归问题_java 递归问题
递归和循环本质是都是多次执行,是可以互相替代的,只是递归是另外一种思想,你的代码是递归
但是,你的代码没办法完成的题目中说的结果,递归思想有问题,没有得出全部结果,一个长度为n的个字符不重复的字符串有n!种排列这个应该都知道吧,你可以执行adcd是无法出来24种结果的。下面是我刚才写的一个递归,没仔细查,可能有不对的,map主要是用来去重的
public static void main (String[] args){
String a = "abcd";
test t = new test();
t.permute(a);
}
public void permute ( String str )
{
Map m = newPermute(str.substring(1),str.toCharArray()[0]+"");
for (Map.Entry entry : m.entrySet()) {
System.out.println(entry.getKey().toString());
}
}
private Map newPermute(String string,String a){
Map map = new HashMap();
char[] str = string.toCharArray();
if(str.length==1){
map.put(str[0]+a,str[0]+a);
map.put(a+str[0],a+str[0]);
return map;
}else{
Map m = newPermute(string.substring(1),str[0]+"");
for (Map.Entry entry : m.entrySet()) {
String key = entry.getKey().toString();
map.put(a+key,a+key);
map.put(key+a,key+a);
for(int i = 1;i < key.toCharArray().length;i++){
String newKey = key.substring(0,i)+a+key.substring(i);
map.put(newKey,newKey);
}
}
}
return map;
}
java中的递归问题_java 递归问题相关推荐
- java 递归题目_Java 递归 常见24道题目 总结
1.N个台阶的走法递归[这里设为10个台阶] /*** N个台阶的走法递归 * * 有个楼梯,台阶有10个,每次可以跳上1阶 或者 2阶 ,那么台阶的走法一共有多少种*/@Testpublic voi ...
- java 积累递归深度_java递归的深度
递归的深度 在使用递归的时候经常会抛出StackOverflowError,顾名思义就是栈满了,而我们这里所说的栈在java中通常就是虚拟机栈(vm stack),在每个方法执行的同时都会创建一个栈帧 ...
- java中什么是反转_Java中如何将字符串反转
目录 一.Java中如何将字符串反转 1.利用 StringBuffer 或 StringBuilder 的 reverse() 成员方法 代码演示: 运行结果: 2.利用 String 的 toCh ...
- java中对象的生存期_Java中对象的生存周期
文章目录 JAVA对象的生存周期 1.创建阶段(Created) 为对象分配内存需要考虑的问题 2.应用阶段(In Use) 3.不可见阶段(Invisible) 4.不可达阶段(Unreachabl ...
- java中审核订单流程图_Java 后端横扫阿里、滴滴、美团总结的面试经验!
这次面试的公司有一点点多,主要是因为毕业后前两份工作找的都很草率,这次换工作就想着,emm,毕业三年了,该找个工作好好沉淀几年了. 先说下这次面试的结果吧: 到 hr 面的:阿里.美团.滴滴.金山云. ...
- java中的排序方法_Java中8种常见的排序方法
本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分 ...
- java中注解的使用_java中注解的使用
使用过ssh框架的人一定也使用过注解,尤其是在spring框架中,注解可谓是spring容器和AOP编程的重要环节.注解就是用于修饰类.全局变量.方法.参数或局部变量的接口,java中规定,注解的使用 ...
- java中组件与容器_java中的容器组件和非容器组件
1.java使用到的图形类主要在java.awt 与javax.swing包中. 2.java.awt 与 javax.swing包的区别: ① java.awt中使用的图形类都是依赖于系统的图形库的 ...
- java中事件监听_Java中的事件监听机制
鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...
最新文章
- codevs 1531 山峰
- java自定义注解简单小例子
- php鼠标悬停字体变大代码CS6,Dreamweaver cs6设置代码字体大小的方法
- ajax 实时进度_如何做好项目进度管理?
- python抓取股票数据_Python自动获取当日所有股票数据
- 生活随笔:郊外骑单车
- 设置mysql acquisition_MYSQL 7*24 高可用环境的部署
- android非空验证,Android 非空格式验证框架
- 记一次mybatis-plus遇到的问题
- 【边缘计算】移动边缘计算中延迟和能量约束任务卸载的最优拍卖
- SPSS-季节性分析
- DisplayPort-DP接口知识
- 澳大利亚每日电价和需求文本数据(2015-2020)
- 【fly-iot飞凡物联】(5):开源项目Apache IoTDB,开源项目学习,原来还有这样的项目,关于IOT的几个开源项目汇总下
- 编译原理 子集构造法实现
- python可以爬取wind数据库吗_如何利用Python来爬取近百万条数据?数据库会炸吧?...
- 重新定义未来的汽车芯片角色 拼算力只是第一步
- 58热衷改名背后,就能拯救自身命运吗?
- python的乌龟画画的扩展运用
- 视频直播质量的评测和实现分享