博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归实现排列组合
阅读量:4463 次
发布时间:2019-06-08

本文共 1338 字,大约阅读时间需要 4 分钟。

递归

官方解释:一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

通俗的讲就是一个特殊的循环,自己调用自己,比我们常用的for/while等循环的逻辑可能要复杂那么一点,下面我就用一个简单的demo帮大家理解一下

public class Permutate {    // 保存生成的排列组合内容    public List
Permutation = new ArrayList
(); /** * 递归的方式计算排列组合 * @param list 传入list.size()个集合 * @param preStr 上一步递归中生成的排列组合 * @return */ public void permutation( List
> list,String preStr) { int size = list.size(); if(1==size){ for(int i=0; i
permu = new ArrayList
(list.get(0)); List
> now = new ArrayList
>(list); now.remove(0); for(int i=0; i
list1 = new ArrayList<>(); list1.add("1"); list1.add("2"); list1.add("3"); List
list2 = new ArrayList<>(); list2.add("a"); list2.add("b"); list2.add("c"); List
list3 = new ArrayList<>(); list3.add("_A"); list3.add("_B"); list3.add("_C"); List
> list = new ArrayList<>(); list.add(list1); list.add(list2); list.add(list3); Permutate permutate = new Permutate(); permutate.permutation(list,""); String str = permutate.Permutation.toString(); System.out.println(str); }}

逻辑分析

结合上图,断点走一遍,或许你就会有自己的见解,递归是个比较灵活的算法,在很多特殊场景它发挥着其它循环无法比拟的作用

 

转载于:https://www.cnblogs.com/wenbiquan/p/10885025.html

你可能感兴趣的文章
利用Python爬虫刷店铺微博等访问量最简单有效教程
查看>>
浅谈软件测试与墨菲定律
查看>>
文件安全复制之 FastCopy
查看>>
强烈推荐美文之《从此刻起,我要》
查看>>
敏捷开发流程
查看>>
leetcode 412. Fizz Buzz
查看>>
对Netflix Ribbon的Loadbalancer类源码设计合理性的一点质疑
查看>>
关于日历的算法
查看>>
[QT编程]QT实现的一个渐隐渐显窗体
查看>>
在Web工程中引入Jquery插件报错解决方案
查看>>
大学总结之影响我最深的十本书
查看>>
用myEclipse连接数据源生成动态数据报表
查看>>
[myeclipse]@override报错问题
查看>>
자주 쓰이는 정규표현식
查看>>
超简单的listview单选模式SingleMode(自定义listview item)
查看>>
vue-11-路由嵌套-参数传递-路由高亮
查看>>
HDU 1199 - Color the Ball 离散化
查看>>
[SCOI2005]骑士精神
查看>>
Hibernate原理解析-Hibernate中实体的状态
查看>>
六时车主 App 隐私政策
查看>>