博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归函数的写法笔记
阅读量:7078 次
发布时间:2019-06-28

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

脑袋总是记不住,做个笔记记下方便用时查询。

 

情景一:Java电商项目中的商品品类管理。品类呈树形结构,现要求找到某一节点下的所有子节点。

// 递归算法,找到子节点private Set
findChildCategory(Set
categorySet, Integer categoryId){ // Mybatis的数据库查询方法 Category category = categoryMapper.selectByPrimaryKey(categoryId); if (category != null){ categorySet.add(category); } // 查找子节点,如果子节点为空就退出递归。递归算法一定要有一个退出的条件 List
categoryList = categoryMapper.selectCategoryChildrenByParentId(categoryId); for (Category categoryItem : categoryList){ findChildCategory(categorySet, categoryItem.getId()); } return categorySet;}

这里为了防止品类重复使用了Set集合。使用该集合要求实体类Category重写equals()和hashCode()方法。

 

情景二:WPF中UI呈树形结构,想要查找指定控件下的所有子控件。

public static List
GetChildObjects
(DependencyObject obj, string name) where T : FrameworkElement{ DependencyObject child = null; List
childList = new List
(); for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++) { child = VisualTreeHelper.GetChild(obj, i); if (child is T && (((T)child).Name == name || string.IsNullOrEmpty(name))) { childList.Add((T)child); } childList.AddRange(GetChildObjects
(child, "")); } return childList;}

 

观察函数的规律:

  • 返回值和传参是相同的集合列表。
  • 传参一个变量用来筛选符合条件的子节点。

 

获取文件下所有层级的文件

public static List
GetAllFiles(DirectoryInfo dir){ FileInfo[] fileInfos = dir.GetFiles(); foreach (FileInfo fi in fileInfos) { FileList.Add(fi.Name); } DirectoryInfo[] dirInfos = dir.GetDirectories(); foreach (DirectoryInfo d in dirInfos) { GetAllFiles(d); } return FileList;}

 

转载地址:http://ugdml.baihongyu.com/

你可能感兴趣的文章
从头開始写项目Makefile(五):嵌套运行
查看>>
3种Nginx防盗链的方法
查看>>
UVA 10057 A mid-summer night's dream.
查看>>
JavaScript中的this
查看>>
vs2005,.net的C#语言开发生成com组件的tlb文件
查看>>
自动修改电脑IP地址.bat
查看>>
当网站上线时记得设置umbDebug为false--致Umbraco开发者
查看>>
JavaScript 操作 Cookie
查看>>
Asp.net MVC3扩展之Ajax异常处理特性
查看>>
Perl语言入门-第五章-输入与输出-习题
查看>>
【转载】wpf学习笔记数据绑定8
查看>>
制作iOS应用图标的最简单方法
查看>>
淘宝JavaScript 编码风格规范
查看>>
poj 2240
查看>>
C# 理解lock
查看>>
H5添加禁止缩放功能
查看>>
Redis防止重複請求鎖功能
查看>>
【TP5.0】引入public/static目录下的静态资源
查看>>
xml文件中配置JDBC源遇到问题 : The reference to entity "characterEncoding" must end with the ';' delimiter...
查看>>
编译php ./configure命令enable和with有什么区别
查看>>