递归的用法

递归主要有两难:

1.判断递归方法的执行主体,具体从入参来看:

 例如第一个递归方法入参是文件夹,确保了是可以保存文件。那么执行的时候就不需要判断入参是否是文件夹;第二个递归方法的入参是文件,不能确定是否是文件夹,需要第一步进行判断。

但是两种方法都实现了查找文件夹下的文件的功能

 

2.判断在什么地方进行递归。一般有递归关系的时候进行递归。而且假设递归方法被执行,深入看看递归的第一步,即方法的第一步,可否满足逻辑。就可以大致知道递归自调用是否合理。

如上图第二个add文件列表下的文件add(modleList)方法的自调用,是合理的,因为找到文件夹下的子目录文件列表,可以继续再次子调用,判断子目录是否有文件夹,符合递归方法的第一步。

 

3.保证一个递归方法是有结束的。结束代表完整的方法,比如一个方法有两部分逻辑,第一部分计算前10个整数,第二部分计算第11个到第12个整数。如果第一部分递归,别忘了完整的结束,还不能缺少第二部分的计算。

还是以上面的2的例子为例,如果找到了当前文件中的文件夹下的子文件集合,那么对子文件集合递归,可以找到子文件的子文件集合目录。那么为了完整的结束整个找到文件的子文件集合,还需要把子文件集合添加到modelList中,也就是

modelList+childList(modelLIst)+递归(chidList(childList(modelList)))才是完整的。

 

只要按照上面的逻辑,基本递归算是入门了。

posted @ 2023-08-11 14:00  IT知识生产小店铺  阅读(18)  评论(0编辑  收藏  举报