遞迴呼叫:乙個函式,呼叫了自身,稱為遞迴呼叫
遞迴函式:乙個會呼叫自身的函式
凡是迴圈能幹的事,遞迴都能幹
方式:寫出臨界條件
找這一次和上一次的關係
假設當前函式已經能用,呼叫自身計算上一次的結果,再求出本次的結果
#求和
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...