What?
递归算法,在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。计算理论可以证明递归的作用可以完全取代循环,因此在很多函数编程语言中习惯用递归来实现循环。
简单来说:
无限调用自身这个函数,每次调用总会改动一个关键变量,直到这个变量达到边界的时候,不再调用。(貌似不简单)
递归是一种分析和解决问题的方法和思想。把问题分解成规模更小的,具有与原问题有着相同揭发的问题。一分为二,二分为四,而四中的每一个都与开始的一是一样的。
满足使用递归方法的条件:
1、可以通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式
2、存在一种简单情境,可以使递归在简单情境下退出
项目需求:
删除一个题目,同时要删除此题目下面所有子题,子题下可能还有子题。
递归代码:
//region 查询此Id下面的所有子节点ID(包含此ID)
public List<String> getPidAndAllHisChildByPid(List<String> idList,String pid){
idList.add(pid);
//获取子节点
List<String> childIds=problemMainDao.queryIdsByOnePid(pid);
for (String childId : childIds) {
//递归子单位
getPidAndAllHisChildByPid(idList,childId);
}
return idList;
}
//endregion
参考: