python入門13遞迴與遍歷

2021-08-28 01:22:03 字數 1706 閱讀 1838

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

例:輸入乙個數(大於等於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...

樹的遞迴與非遞迴遍歷

樹的遞迴遍歷 建立一棵用二叉鍊錶方式儲存的二叉樹,並對其進行遍歷 先序 中序和後序 將遍歷序列輸出到顯示器上。基本要求 從鍵盤輸入一棵二叉樹的先序序列,以二叉鍊錶作為儲存結構,建立二叉樹並對其進行遍歷 先序 中序和後序 然後將遍歷結果列印輸出。要求編寫遞迴和非遞迴兩種演算法來實現。測試資料 輸入序列...