这是我在另外一门实战课程学习到的一个递归算法
//递归算法,算出子节点
private Set<Category> findChildCategory(Set<Category> categorySet,Integer categoryId){
//缩小规模,算出没有子节点的情况,查询该分类id的分类
Category category = categoryMapper.selectByPrimaryKey(categoryId);
if (category!=null){
categorySet.add(category);
}
//查找子节点,递归算法一定要有一个退出的条件
//在该节点有子节点的情况下,调用它子节点的该方法,计算出子节点
//先查询出有多少个子节点
List<Category> categoryList = categoryMapper.selectCategoryChildrenByParentId(categoryId);
//再对所有子节点去调用该算法
for (Category categoryItem:categoryList){
findChildCategory(categorySet,categoryItem.getId());
}
return categorySet;
}
上面的注释是我自己的理解,在刘老师您的课中,好像没有讲过把集合作为参数的这种方法的递归,我有想过把这个集合的参数直接用方法体局部变量来做,但是又觉得这样会造成内存的问题,我又想想set是动态结构,不会立马分配内存,对于这种返回集合类型的递归,我到底应该如何去做才最合适呢?不管是学习您的数据结构课还是学习java编程,我都是个新手,还没有做完一个完整的项目,希望能给我多些指导。