美文网首页
函数之递归函数

函数之递归函数

作者: endmoon | 来源:发表于2018-11-04 21:16 被阅读3次
    #查找某个文件下的所有文件和目录
    '''
    1.os.listdir 用于列出所有目录和文件
    2.os.isfile用于判断类型是否为文件
    3.os.isdir用于判断类型是否为目录
        为目录时需要进入到目录,需要用到os.path.join(当前目录,子目录)
    
    
    代码步骤:
    1.输入一个路径(目录),这个作为函数的参数
    def set_path(path):
    2.列出该路径下的所有文件和目录,list_file中存放的是改目录下所有文件和目录
        list_file=os.listdir(path)
    3.遍历该目录,获得子文件和目录
        for file in list_file:
    4.得到该文件的绝对路径=path(当前目录路径)+file(该目录下的子文件或目录名)
        file_path=os.path.join(path,file)
    5.判断该文件为文件还是目录,如果是文件,就打印该文件名
        if os.isfile(file_path):
            print(file)
    6.判断该文件为文件还是目录,如果是目录,就把新的目录作为参数以递归函数的形式进行重复调用
        if os.isdir(file_path):
            set_path(file_path)
    '''
    
    import os
    def set_path(path):
        list_file = os.listdir(path)
        for file in list_file:
            try:
                file_path = os.path.join(path, file)
                if os.path.isfile(file_path):
                    print(file)
                if os.path.isdir(file_path):
                    set_path(file_path)
            except(PermissionError,FileNotFoundError) as e:
                print("没有权限访问")
    
    if __name__=="__main__":
        result=set_path('c:\\')
    
    递归最核心的思想是:每一次递归,整体问题都要比原来减小,并且递归到一定层次时,要能直接给出结果!
    
    每一个递归程序都遵循相同的基本步骤:
    
    1.初始化算法。递归程序通常需要一个开始时使用的种子值(seed value)。可以向函数传递参数,或者提供一个入口函数,这个函数是非递归的,但可以为递归计算设置种子值。
    
    2.检查要处理的当前值是否已经与基线条件相匹配(base case)。如果匹配,则进行处理并返回值。
    
    3.使用更小的或更简单的子问题(或多个子问题)来重新定义答案。
    
    4.对子问题运行算法。
    
    5.将结果合并入答案的表达式。
    
    6.返回结果。
    

    相关文章

      网友评论

          本文标题:函数之递归函数

          本文链接:https://www.haomeiwen.com/subject/rzmdxqtx.html