java recursive call 递归调用
来源:互联网 发布:淘宝网韩版女装 编辑:程序博客网 时间:2024/06/03 23:39
java recursive call 递归调用
Question:
有一个父子关系的机构List,其中需要找到某个机构返回出来。每一个元素有标识:number 代表本身机构号、 parent是父机构号、children是子元素列表
Solution:
根据思考如果使用递归,有两种解决办法:
- 使用遍历的办法
在这个list上,逐个获取元素,如果这个元素有子children,那么就需要获取子children并进行循环,遍历所有元素及children,直到找到我们所需要的机构位置. - 使用按关系查找方法
- 假设要找的机构是curOrgan,那么我们查找list,如果本身不包含,那么就将curOrgan的父元素传进去,直到找到这个父节点未知。如果我们在这里找到的就是curOrgan,那么就需要退出
- 将查找到的父元素的children以list的参数传进去,重新以curOrgan进行查找。
- 将找到的organ return出来,作为最后的return;
第一种方法很普通,就略去。第二种我们看到需要有一个不变的参数curOrgan,还需要一个变动的参数,以curOrgan进行变化,还需要一个list.
coding:
private Organization getOrgan(Organization loopOrgan, List<Organization> list, String curOrgan){ //省略list为null或者空的判断 boolean flag = false; Organization findOrgan = null; for(Organizaiton organ : list){ if(organ.getNumber().equals(loopOrgan.getNumber()){ flag = true; if(organ.getNumber().equals(curOrgan){ return organ; }else{ loopOrgan = organ; break; } } } if(!flag){ findOrgan = getOrgan(loopOrgan.getParent(), list, curOrgan); }else{ findOrgan = getOrgan(getOrgan(curOrgan), loopOrgan.getChildren(), curOrgan); } return findOrgan;}
summary:
对于递归思维,自己仍然是不很熟悉,尤其是逆向递归。这个问题最初自己想要两个变量来解决,但是发现没有办法决定跳出点,包括以后的思路也是决定不好跳出点,所以花了很长时间。要理解递归的关键是: 1.每次循环的操作都是相同的 2.跳出点不能是每次会产生变化的量,应该是一个常量或者不因循环变化的变量,并且需要唯一。否则就跳出来就是错误的结果。 如果同学有相关的递归好的资料或练习题,可不可以发给我一下,谢谢。yongkangchn@126.com.
0 0
- java recursive call 递归调用
- 尾调用(Tail Call)和尾递归(Tail Recursive)
- 递归(recursive):
- 递归数列(recursive sequence)
- 阶乘递归(factorial recursive):
- 递归问题(Recursive)
- Recursive method(递归方法)
- 047.Recursive 递归函数
- 047.Recursive 递归函数
- Recursive - leetcode [递归]
- 终于解决 归递调用 警告,其实程序没有 归递调用*** WARNING L13: RECURSIVE CALL TO SEGMENT
- 尾递归(tail-recursive)
- java中的递归调用
- java的递归调用
- Java递归调用
- java方法递归调用
- Java方法递归调用
- java之递归调用
- iOS 提交NSArray到后台,把里面的数组转换字符串
- JAVA环境变量的配置
- 天纵智能软件快速开发平台传真插件
- 身份证实名认证
- ViewPager的页面滑动监听事件onPageChangeListener
- java recursive call 递归调用
- linux 内存释放
- 前端资源
- 提高zxing生成二维码的容错率及zxing生成二维码的边框设置(zxing 1.6)
- 二叉树常见算法总结-基本二叉树
- Unity3d网络游戏Socket通讯
- TimePicker组件的深入解析
- 【Python】|廖雪峰官网学习笔记-HTML简介
- synchronized 方法