java中的递归思想及应用
2024-08-21 12:36:01
递归就是自己调自己,最需要注意的就是结束条件,否则可能就是死循环,导致内存溢出
public T a(Object x,Object y)
{
if(条件true)
{
a(x1,y1);
}
else
{
return f(x,y);
}
}
例如:
1.求阶乘
5!=5x4x3x2x1
分析:递归是一层一层推进,第一层是 5*4,第二层4*3,第三层,3*2,递归入参分别是5,4,3,2,1,当为1时返回1,递归终止
public int f(n)
{
if(n=1)
{
return 1;
}
else
{
return n*f(n-1);
}
}
2.获取某一父节点下的所有子节点,多层级
分析:第一层入参是父节点本身,第二层入参是父节点下的第一层子节点,第三层是第一层所有节点下的子节点,当节点是叶子节点(没有节点的父节点是它)时,不用继续向下。
只要不是叶子节点,父节点找到的节点都是其子集setchild();
child
{
menuA
child
{
menuA1
child{}
}
menuB
child{}
.....
}
//菜单类
public class Menu
{
private int pid;
private int menuId;
private int menuName;
List<Menu> childs;
.....
}
//获取所有菜单对象
List<Menu> menus = menuDao.getAllMenus();
//查询菜单树方法
public List<Menu> getMenuTreeByPid(List<Menu>menus,int pid)
{
List<Menu> child = new ArrayList<Menu>();
for(Menu menu: menus)
{
if(menu.getPid== pid ) // 入口,说明当前pid下存在子节点
{
menu.setChild(getMenuTreeByPid(menus,menu.getMenuId));
child.add(menu);
}
}
return child;
}
最新文章
- GetViewUrl
- Android onActivityResult没响应
- mac 终端启动 jboss 停留在(Starting) 不能启动joss
- POI 简单合并单元格
- mysql show processlist命令 详解
- web.xml基本配置描述
- 单服务员排队模拟100天matlab实现
- Oracle rank和dense_rank排名函数
- HDU Redraw Beautiful Drawings 推断最大流是否唯一解
- 【洛谷P1659】啦啦队排练
- ddt源码修改:HtmlTestRunner报告依据接口名显示用例名字
- 【XSY3139】预言家 数位DP NFA
- JAVA笔记--static
- netcore webapi统一配置跨域问题
- EDK II之USB设备驱动程序的加载与运行
- Go面向对象(三)
- JQuery中的事件委托
- eclipse 设置打开java文件代码自动折叠
- 类型安全的EventHandlerList
- HTML中name,value属性区分
热门文章
- Java学习路线-知乎
- 2017清北学堂(提高组精英班)集训笔记——动态规划Part3
- “在注释中遇到意外的文件结束”--记一个令人崩溃的bug
- Express的日志模块morgan
- 各版本Google浏览器下载地址
- JavaScript学习系列6 -- JavaScript中的垃圾回收(内存释放)
- 6.wireshark使用全解
- PCC-S-02201, Encountered the symbol ";DB_USER_OPER_COUNT";
- POJ 1601 拓展欧几里得算法
- Http客户端再封装