Lyf凤

靡不有初,鲜克有终

扩大
缩小

递归函数

递归的定义: 在函数中调⽤函数本身,就是递归

# 一个简单的递归函数
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)
#递归遍历目录下所有文件

 

 

posted on 2019-01-03 21:39  Lyf凤  阅读(243)  评论(0编辑  收藏  举报

导航

levels of contents