递归算法的应用
来源:互联网 发布:莫知我哀的莫的用法 编辑:程序博客网 时间:2024/05/29 13:04
—递归—
递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回(递归简单说就是程序调用自身的编程技巧。)
—汉诺塔—
public class super1{ static int count=1; public static void move(char j,char k){ System.out.println("第"+(super1.count++)+"步:把一个杯子从桌子"+j+"拿到杯子"+k); } public static void hanoi(char a,char b,char c,int n){ if(n==1)move(a,c); else{hanoi(a,c,b,n-1); move(a,c); hanoi(b,a,c,n-1); } } public static void main(String[] args){ char a='A',b='B',c='C'; int num=3;//杯子的个数 hanoi(a,b,c,num); } }
—递归树—
List<EpvPvModulesBo> bos = page.getList();List<EpvPvModulesBo> allNode=null; //所有子节点List<EpvPvModulesBo> node=new ArrayList<EpvPvModulesBo>();//子节点for (EpvPvModulesBo bo : bos) {allNode = mapper.getLeafByCmd(bo.getOption_cmd());//所有子节点if(allNode!=null && allNode.size()!=0){recursionNode(allNode, bo);}}/** * * @Description: * @author Leesire * @param bos:一级点下的所有字节点 * @param bo * @date: 2017-8-5 上午9:57:18 */private void recursionNode(List<EpvPvModulesBo> bos,EpvPvModulesBo bo) {List<EpvPvModulesBo> childList = getChildList(bos, bo);// 得到子节点列表if (hasChild(bos, bo)) {// 判断是否有子节点,加入有子节点继续递归子节点。Iterator<EpvPvModulesBo> it = childList.iterator(); while (it.hasNext()) { EpvPvModulesBo n = (EpvPvModulesBo) it.next(); recursionNode(bos, n); }}}/** * * @Description: 得到子节点列表 * @author Leesire * @param list * @param bo:父节点 * @return * @date: 2017-8-5 上午9:51:22 */private List<EpvPvModulesBo> getChildList(List<EpvPvModulesBo> list, EpvPvModulesBo bo) {List<EpvPvModulesBo> nodeList = new ArrayList<EpvPvModulesBo>();if(list!=null && list.size()!=0){for (EpvPvModulesBo noBo : list) {if(noBo.getParent_module_id()!=null && !"".equals(noBo.getParent_module_id()) && noBo.getParent_module_id().equals(bo.getModule_id())){nodeList.add(noBo);}}bo.setNode(nodeList);}return nodeList;}/** * * @Description: 判断是否有子节点 * @author Leesire * @param list * @param bo:父节点 * @return * @date: 2017-8-5 上午9:51:11 */private boolean hasChild(List<EpvPvModulesBo> list, EpvPvModulesBo bo) {return getChildList(list, bo).size() > 0 ? true : false;}
阅读全文
0 0
- 递归算法的应用
- 递归算法的应用
- 递归算法的应用
- 递归算法的简单应用
- 栈和递归的应用:迷宫算法
- 递归算法的应用(迷宫)
- 二叉树的递归算法应用
- 递归算法及DFS搜索的应用
- 递归算法及其应用
- 递归算法及其应用
- Java递归算法应用
- 递归算法应用
- 递归算法及应用
- (十六)递归算法与递归算法应用
- 【ITOO】树形列表的实现与递归算法的应用
- python数据结构与算法 21 递归的实现和应用
- 算法学习:递归的应用--将日期段按年划分
- Java数据结构和算法-归并排序的递归应用
- linux c使用system调用shell脚本
- BZOJ 4772 显而易见的数论(生成函数+组合数学+数论)
- Servlet--保存cookie实现保存用户登录状态
- 安装XGBoost库(macOS&window10)
- Android底层调用C代码(JNI实现)
- 递归算法的应用
- 华为OJ——密码强度等级
- Java super关键字
- set 中对象元素插入与查找
- 用单片机定时器操作流水灯
- JavaScript 高级程序设计
- MOOC清华《程序设计基础》第9章:自动售卖程序 v 1.0
- dubbo处理调用请求涉及缓存问题
- seafile从sqlite迁移到mysql