千峰筆記 遞迴 棧與佇列 目錄遍歷

2021-09-10 14:02:17 字數 2811 閱讀 1139

遞迴呼叫:乙個函式,呼叫了自身,稱為遞迴呼叫

遞迴函式:乙個會呼叫自身的函式

凡是迴圈能幹的事,遞迴都能幹

方式:寫出臨界條件

找這一次和上一次的關係

假設當前函式已經能用,呼叫自身計算上一次的結果,再求出本次的結果

#求和

def sum1(n):

sum = 0

for x in range(1, n+1):

sum += x

return sum

res = sum1(5)

print(「res =」, res)

#遞迴

def sum2(n):

if n == 1:

return 1

else:

return n + sum2(n – 1)

棧:先進後出

#模擬棧結構

stack =

#壓棧(向棧裡存資料)

print(stack)

#出棧(在棧裡取資料)

res1 = stack.pop()  #取a

print(「res =」,res)

print(stack)

res 2= stack.pop()

print(「res =」,res)

print(stack)

先進先出

import collections

#建立乙個佇列

queue = collections.deque()

print(queue)

#進隊(存資料)

print(queue)

print(queue)

print(queue)

#出隊(取資料)

res2 = queue.popleft()

print(「res1 =」,res1)

res2 = queue.popleft()

print(「res1 =」,res2)

res3 = queue.popleft()

print(「res1 =」,res3)

import os

def getalldir(path):

#得到當前目錄下所有檔案

fileslist = os.listdir(path)

#處理每乙個檔案

#sp += 「           」

for filename in fileslist:

#判斷是否是路徑(用絕對路徑)

fileabspath = os.path.join(path, filename)

if os.path.isdir(fileabspath):

print(「目錄:」, filename)

#遞迴呼叫

getalldir(fileabspath)

else:

print(「目錄:」, filename)

print()

getalldir(r」 c:\users\89460\documents\pythondata」)

import os

def getalldirde(path):

stack =    #列表模擬

#處理棧,當棧為空時結束迴圈

while len(stack) != 0:

#從棧裡取出資料

dirpath = stack.pop()

#print(dirpath)

#目錄下所有檔案

fileslist = os.listdir(dirpath)

#處理每乙個檔案,普通檔案則列印,目錄則壓入棧

for filename in fileslist:

fileabspath = os.path.join(path, filename)

if os.path.isdir(fileabspath):

#是目錄就壓棧

print(「目錄:」 + filename)

else:

#列印普通檔案

print(「普通:」 + filename)

getalldirde(r」 c:\users\89460\documents\pythondata」)

import os

import collections

def getalldirqu(path):

queue = collections.deque()

#進隊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)

else:

#列印普通檔案

print(「普通:」 + filename)

getalldirqu(r」 c:\users\89460\documents\pythondata」)

python中的遞迴,棧與佇列和目錄遍歷

遞迴呼叫 乙個函式,呼叫了自身,稱為遞迴呼叫 遞迴函式 乙個會呼叫自身的函式稱為遞迴函式 凡是迴圈能幹的事,均可以用遞迴寫出來 方式 寫出臨界條件 找這一次和上一次的關係 假設當前函式已經能用,呼叫自身計算上一次的結果,再求出本次結果 思路 臨界條件 1 找上一次和本次的關係 相加的關係 sum 4...

遞迴 棧和佇列遍歷

import os def getalldir path,sp fileslist os.listdir path 得到當前目錄下所有的檔案 sp for filename in fileslist 處理每乙個檔案 fileabspath os.path.join path,filename if ...

Python 棧和佇列及其模擬遞迴遍歷目錄

本文主要概括了棧和佇列的定義及其相應的方法,總結了如何向棧和佇列中存資料和取資料。最後利用棧是一種先進後出的資料結構,而佇列是一種先進先出的資料結構的特徵,用棧和佇列來模擬遞迴遍歷目錄。模擬棧結構 先進後出 stack 佇列結構 先進先出 import collections queue colle...