递归和循环本质是都是多次执行,是可以互相替代的,只是递归是另外一种思想,你的代码是递归

但是,你的代码没办法完成的题目中说的结果,递归思想有问题,没有得出全部结果,一个长度为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 递归问题相关推荐

  1. java 递归题目_Java 递归 常见24道题目 总结

    1.N个台阶的走法递归[这里设为10个台阶] /*** N个台阶的走法递归 * * 有个楼梯,台阶有10个,每次可以跳上1阶 或者 2阶 ,那么台阶的走法一共有多少种*/@Testpublic voi ...

  2. java 积累递归深度_java递归的深度

    递归的深度 在使用递归的时候经常会抛出StackOverflowError,顾名思义就是栈满了,而我们这里所说的栈在java中通常就是虚拟机栈(vm stack),在每个方法执行的同时都会创建一个栈帧 ...

  3. java中什么是反转_Java中如何将字符串反转

    目录 一.Java中如何将字符串反转 1.利用 StringBuffer 或 StringBuilder 的 reverse() 成员方法 代码演示: 运行结果: 2.利用 String 的 toCh ...

  4. java中对象的生存期_Java中对象的生存周期

    文章目录 JAVA对象的生存周期 1.创建阶段(Created) 为对象分配内存需要考虑的问题 2.应用阶段(In Use) 3.不可见阶段(Invisible) 4.不可达阶段(Unreachabl ...

  5. java中审核订单流程图_Java 后端横扫阿里、滴滴、美团总结的面试经验!

    这次面试的公司有一点点多,主要是因为毕业后前两份工作找的都很草率,这次换工作就想着,emm,毕业三年了,该找个工作好好沉淀几年了. 先说下这次面试的结果吧: 到 hr 面的:阿里.美团.滴滴.金山云. ...

  6. java中的排序方法_Java中8种常见的排序方法

    本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分 ...

  7. java中注解的使用_java中注解的使用

    使用过ssh框架的人一定也使用过注解,尤其是在spring框架中,注解可谓是spring容器和AOP编程的重要环节.注解就是用于修饰类.全局变量.方法.参数或局部变量的接口,java中规定,注解的使用 ...

  8. java中组件与容器_java中的容器组件和非容器组件

    1.java使用到的图形类主要在java.awt 与javax.swing包中. 2.java.awt 与 javax.swing包的区别: ① java.awt中使用的图形类都是依赖于系统的图形库的 ...

  9. java中事件监听_Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

最新文章

  1. codevs 1531 山峰
  2. java自定义注解简单小例子
  3. php鼠标悬停字体变大代码CS6,Dreamweaver cs6设置代码字体大小的方法
  4. ajax 实时进度_如何做好项目进度管理?
  5. python抓取股票数据_Python自动获取当日所有股票数据
  6. 生活随笔:郊外骑单车
  7. 设置mysql acquisition_MYSQL 7*24 高可用环境的部署
  8. android非空验证,Android 非空格式验证框架
  9. 记一次mybatis-plus遇到的问题
  10. 【边缘计算】移动边缘计算中延迟和能量约束任务卸载的最优拍卖
  11. SPSS-季节性分析
  12. DisplayPort-DP接口知识
  13. 澳大利亚每日电价和需求文本数据(2015-2020)
  14. 【fly-iot飞凡物联】(5):开源项目Apache IoTDB,开源项目学习,原来还有这样的项目,关于IOT的几个开源项目汇总下
  15. 编译原理 子集构造法实现
  16. python可以爬取wind数据库吗_如何利用Python来爬取近百万条数据?数据库会炸吧?...
  17. 重新定义未来的汽车芯片角色 拼算力只是第一步
  18. 58热衷改名背后,就能拯救自身命运吗?
  19. python的乌龟画画的扩展运用
  20. 视频直播质量的评测和实现分享

热门文章

  1. jQuery.获取子节点
  2. 十大经典排序算法(动图演示)(转)
  3. 手机尺寸相关的概念 +尺寸单位+关于颜色
  4. MVC-通过对象获取整个表单内容
  5. SpringBoot中.properties文件中配置项显示到页面中文乱码解决
  6. Hbase常用数据库操作类
  7. python ----元组方法以及修改细节
  8. 关于人工智能的实现(猜测)
  9. form表单提交回调函数
  10. Linux修改本地时间