当前位置: 代码迷 >> 综合 >> 拜师——python基础入门—第十大节课—递归算法原理 阶乘计算——day50
  详细解决方案

拜师——python基础入门—第十大节课—递归算法原理 阶乘计算——day50

热度:96   发布时间:2024-02-09 21:49:42.0

第153课时: 递归算法原理 阶乘计算



【示例】使用递归算法遍历目录下所有文件

文件夹结构
在这里插入图片描述
初步的代码:

import osdef getfiles(path):childfile=os.listdir(path)for file in childfile:filepath = os.path.join(path,file)if os.path.isdir(filepath):getfiles(filepath)print(filepath)getfiles('dy')

dy\22
dy\haha.py
dy\hahaha.zip
dy\mv\haha.py
dy\mv\wlz.txt
dy\mv

但是我们可以看到,显示不出文件的关系。所以需要改进。

import osdef getfiles(path,level):childfile=os.listdir(path)for file in childfile:filepath = os.path.join(path,file)if os.path.isdir(filepath):getfiles(filepath,level+1)print('\t'*level+filepath)getfiles('dy',0)

dy\22
dy\haha.py
dy\hahaha.zip
dy\mv\haha.py
dy\mv\wlz.txt
dy\mv

这个level 表示缩进的个数, 、t表示一个缩进每深一层level就加1

但是可以看到,上下关系是颠倒的。所以必须再改进


import osallfiles = []
def getfiles(path,level):childfile=os.listdir(path)for file in childfile:filepath = os.path.join(path,file)if os.path.isdir(filepath):getfiles(filepath,level+1)allfiles.append('\t'*level+filepath)getfiles('dy',0)for f in reversed(allfiles):print(f)

dy\mv
dy\mv\wlz.txt
dy\mv\haha.py
dy\hahaha.zip
dy\haha.py
dy\22

把读取出的结果直接放入一个序列中,然后反转序列,直接挨个打印:

reversed(allfiles)