python入门13递归与遍历

一个函数调用自身,称为递归调用。

方式:
1.写出临界条件
2.找这一次和上一次的关系
3.假设当前函数已经能用,调用自身计算上一次的结果,再求出本次的结果

例:
输入一个数(大于等于1),求1+2+3+…+n的和

     def sum2(n):
         if n==1:
             return 1
         else:
             return n+sum2(n-1) 

栈:
先进后出

#模拟栈结构 stack = []

#压栈 stack.append()

#出栈 stack.pop()


队列:
先进先出

#模拟队列结构
import collections
q = collections.deque()

#进队
q.append()

#出队
q.popleft()


递归遍历目录:

import os                  #导入操作系统相关模块
def getAllDir(path,p=""):
    filesList = os.listdir(path)          #读取该目录内文件
    p+="  "                              #字符串p控制目录层级,走一层加两个空格
    for fileName in filesList:
        fileAbsPath = os.path.join(path,fileName)
        if os.path.isdir(fileAbsPath):       #判断是否为目录
            print(p+fileName)
            getAllDir(fileAbsPath,p)        #对是目录的文件进行递归处理
        else:
            print(p+fileName)    

栈遍历目录(深度遍历):

import os
def getAllDirDE(path):
    stack=[]
    stack.append(path)  
    #栈空为循环结束条件
    while len(stack)!=0:
        dirpath = stack.pop()
        filesList = os.listdir(dirpath)  #取出 要处理file的每一个子文件
        for fileName in filesList:      
            fileAbsPath = os.path.join(dirpath,fileName)
            if os.path.isdir(fileAbsPath):        #是目录就压栈
                print("目录"+fileName)
                stack.append(fileAbsPath)
            else:
                print(“文件”+fileName)

队列遍历目录(广度遍历):

import collections
import os
def getAllDirQU(path):
    queue = collections.deque()
    queue.append(path)
    while len(queue)!=0:
        dirpath = queue.popleft()
        fileslist = os.listdir(dirpath)
        for fileName in fileslist:
            fileAbsPath = os.path.join(dirpath,fileName)
            if os.path.isdir(fileAbsPath):
                print(fileName)
                queue.append(fileAbsPath)
            else:
                print(fileName)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值