python递归

170 阅读1分钟

递归:

递归是一种非常重要的算法,其中函数调用自身一次或多次,直到达到一个特定的条件为止,即方法(函数)自己调用自己。注意,递归需要小心处理,因为如果没有正确的退出条件或递归太深,它可能会导致堆栈溢出或无限循环。

例如:

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

print(factorial(5))

在上面的函数中,factorial 函数调用自身,每次将 n 减少 1,直到 n 等于 0。在每次调用中,函数都会计算 n 的阶乘并将其返回,直到函数最终返回 1。

使用递归获取文件夹内所有的内容:

def get_files_recursion_from_dir(path):
    """
    从指定的文件夹中使用递归的方式,获取全部的文件夹
    :param path:   要查询的文件夹路径
    :return:        list,包含全部文件,如果路径不存在或者没有文件返回空
    """
    import os
    
    file_list = {"files": [], "childer": []}
    
    # 如果给的文件已经是一个文件夹就进行操作
    if os.path.isdir(path):
        if os.path.exists(path):
            for item in os.listdir(path):
                new_path = path + "/" + item
                if os.path.isdir(new_path):
                    # 进入到这里表明这个目录还是文件夹
                    file_list["childer"] = get_files_recursion_from_dir(new_path)
                else:
                    file_list["files"].append(new_path)
        else:
            print("查找的路径不存在")
            return []

    return file_list

os模块:

  • .listdir() 可以列出文件夹下有哪些内容
  • .path.isdir() 判断给的文件是不是一个文件夹
  • .path.exists() 判断一个路径是否存在