递归就是自己调自己,最需要注意的就是结束条件,否则可能就是死循环,导致内存溢出

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;
}
 

最新文章

  1. GetViewUrl
  2. Android onActivityResult没响应
  3. mac 终端启动 jboss 停留在(Starting) 不能启动joss
  4. POI 简单合并单元格
  5. mysql show processlist命令 详解
  6. web.xml基本配置描述
  7. 单服务员排队模拟100天matlab实现
  8. Oracle rank和dense_rank排名函数
  9. HDU Redraw Beautiful Drawings 推断最大流是否唯一解
  10. 【洛谷P1659】啦啦队排练
  11. ddt源码修改:HtmlTestRunner报告依据接口名显示用例名字
  12. 【XSY3139】预言家 数位DP NFA
  13. JAVA笔记--static
  14. netcore webapi统一配置跨域问题
  15. EDK II之USB设备驱动程序的加载与运行
  16. Go面向对象(三)
  17. JQuery中的事件委托
  18. eclipse 设置打开java文件代码自动折叠
  19. 类型安全的EventHandlerList
  20. HTML中name,value属性区分

热门文章

  1. Java学习路线-知乎
  2. 2017清北学堂(提高组精英班)集训笔记——动态规划Part3
  3. “在注释中遇到意外的文件结束”--记一个令人崩溃的bug
  4. Express的日志模块morgan
  5. 各版本Google浏览器下载地址
  6. JavaScript学习系列6 -- JavaScript中的垃圾回收(内存释放)
  7. 6.wireshark使用全解
  8. PCC-S-02201, Encountered the symbol &quot;DB_USER_OPER_COUNT&quot;
  9. POJ 1601 拓展欧几里得算法
  10. Http客户端再封装