乙個函式呼叫自身,稱為遞迴呼叫。
例:輸入乙個數(大於等於1),求1+2+3+…+n的和
def sum2(n):
if n==1:
return 1
else:
return n+sum2(n-1)
棧:
先進後出
#模擬棧結構 stack =
#出棧 stack.pop()
佇列:先進先出
#模擬佇列結構
import collections
q = collections.deque()
#出隊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=
#棧空為迴圈結束條件
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)
else:
print(「檔案」+filename)
佇列遍歷目錄(廣度遍歷):
import collections
import os
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)
深度優先遍歷與廣度優先遍歷 遞迴與非遞迴思路
深度優先遍歷 1 深度優先遍歷的遞迴定義 圖的深度優先遍歷類似於樹的前序遍歷。採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋。這種搜尋方法稱為深度優先搜尋 depth first search 相應地,用此方法遍歷圖就很自然地稱之為圖的深度優先遍歷 2.基本實現思想 1 訪問頂點v 2 從v的未被...
Python入門 for 遍歷迴圈
for 為遍歷迴圈,可以遍歷任何序列,如 list,tuple,迭代器等。for 的語句格式如下 for 變數 in 迴圈序列 迴圈體 釋 通過 for 迴圈依次將 迴圈序列 中的資料取出賦值給 變數 再通過 迴圈體 進行處理。示例1 for 迴圈訪問列表 for 迴圈訪問列表 list woodm...
樹的遞迴與非遞迴遍歷
樹的遞迴遍歷 建立一棵用二叉鍊錶方式儲存的二叉樹,並對其進行遍歷 先序 中序和後序 將遍歷序列輸出到顯示器上。基本要求 從鍵盤輸入一棵二叉樹的先序序列,以二叉鍊錶作為儲存結構,建立二叉樹並對其進行遍歷 先序 中序和後序 然後將遍歷結果列印輸出。要求編寫遞迴和非遞迴兩種演算法來實現。測試資料 輸入序列...