递归函数
递归的定义: 在函数中调⽤函数本身,就是递归
# 一个简单的递归函数 def func(): print("我是谁") func() func()
递归的最大深度——官方给出的是最大1000,实测win上是998,Mac上是997.(面试时候的标准回答)
def foo(n): print(n) n += 1 foo(n) foo(1)
递归的应用:
我们可以使用递归来遍历各种树形结构, 比如我们的文件夹系统. 可以使用递归来遍历该文件夹中的所有文件.
import os def func(filepath,n): # 传入根文件夹路径 # "d:/a/" files = os.listdir(filepath) # 打开文件夹,列出里面的所有文件名(返回的是列表) for el in files: # 这里的el是文件(或夹)的名字 b, c # 将文件名还原为文件路径 zpath = os.path.join(filepath, el) # "d:/a/b" 子文件夹路径 将文件夹的名字转换为路径:根文件夹路径+自己的文件夹名字,进行拼接,固定写法 if os.path.isdir(zpath): # 判断传入的路径是否是文件夹 print('\t' * n, el) # 每层的文件夹缩进n个tab的距离再打印文件夹名字 func(zpath, n+1) # 每递归一次(即又打开一层文件夹),就多缩进一个tab else: # 是文件 print('\t' * n, el) # 直接打印名字就行,不需要再进去一层了 func("d:/a/",0)