一. 遞歸函數node
# 遞歸調用:一個函數,調用了自身 稱爲遞歸調用
# 遞歸函數: 一個會調用自身的函數稱爲遞歸函數
# 凡是循環能幹的事情 遞歸都能幹python
# 方式:jquery
# 寫出臨界條件
# 我這一次和上一次的關係
# 假設當前函數已經能用 調用自身計算上一次結果 在求出本次的結果npm
# 輸入一個數(大於等於1) 求 1+2+3.......的和 def sum1(n): sum=0 for x in range(1,n+1): sum+=x return sum res=sum1(5) print(res)
def sum2(n): if n==1: return 1 else: return n+sum2(n-1) res=sum2(3) print(res) #3 # 5+sum2(4) # 5+4+sum2(3) # 5+4+3+sum2(2) # 5+4+3++2sum2(1) # 5+4+3+2+1
# 模擬棧數據結構json
# 壓棧向棧裏導入數據bootstrap
a1=[] a1.append("A") print(a1) #['A'] a1.append("B") print(a1) #['A', 'B'] a1.append("C") print(a1) #['A', 'B', 'C'] # 出棧 b1=a1.pop() print(b1) # C print(a1) # ['A', 'B'] b2=a1.pop() print(b2) # B print(a1) # ['A'] b3=a1.pop() print(b3) # A print(a1) # []
import collections
# 隊列是先進先出
# 建立一個隊列數據結構
import collections # 隊列是先進先出 # 建立一個隊列 queue=collections.deque() print(queue) #deque([]) # 進隊 queue.append("1") print(queue) #deque(['1']) queue.append("2") print(queue) #deque(['1', '2']) queue.append("3") print(queue) #deque(['1', '2', '3']) # 出隊取數據 a1=queue.popleft() print(a1) #1 print(queue) #deque(['2', '3']) a2=queue.popleft() print(a2) # 2 print(queue) #deque(['3']) a3=queue.popleft() print(a3) #3 print(queue) # deque([])
# 深度遍歷 利用 進棧 和 出棧 的知識1app
import os def getAllDir(path): # 獲得目錄下的全部目錄 filesList=os.listdir(path) # 處理每個文件、 for fileName in filesList: # 判斷路徑 是否覺對路徑 fileAbsPath=os.path.join(path,fileName) if os.path.isdir(fileAbsPath): print("目錄"+fileName) getAllDir(fileAbsPath) else: print("普通文件"+fileName) getAllDir(r"E:\Studypython\py2\dir")
# 深度遍歷 利用 進棧 和 出棧 的知識2函數
import os def getAllDirDE(path): stack=[] stack.append(path) # print(stack) # ['E:\\Studypython\\py2\\dir'] 處理棧 當前棧爲空的時候結束循環 while len(stack)!=0: 從棧裏取出數據 dirPath=stack.pop() # print(dirPath) # E:\Studypython\py2\dir 目錄下全部文件 filesList=os.listdir(dirPath) #print(filesList) # ['.project', '2', 'app.js', 'controller', 'models', 'node_modules', 'package.json', 'public', 'uploads', 'views'] 處理每個文件 若是是普通文件則打印 若是是目錄則將改目錄的地址壓棧 for fileName in filesList: # print(fileName) # .project 2 app.js controller models node_modules package.json public uploads views fileAbsPath=os.path.join(dirPath,fileName) #print(fileAbsPath) #E:\Studypython\py2\dir\.project # E:\Studypython\py2\dir\2 # E:\Studypython\py2\dir\app.js # E:\Studypython\py2\dir\controller # E:\Studypython\py2\dir\models # E:\Studypython\py2\dir\node_modules # E:\Studypython\py2\dir\package.json # E:\Studypython\py2\dir\public # E:\Studypython\py2\dir\uploads # E:\Studypython\py2\dir\views # if os.path.isdir(fileAbsPath): 是目錄就壓棧 print("目錄---"+fileName) # 目錄---2 # 目錄---controller # 目錄---models # 目錄---node_modules # 目錄---public # 目錄---uploads # 目錄---views stack.append(fileAbsPath) #print(stack) #['E:\\Studypython\\py2\\dir\\2'] # ['E:\\Studypython\\py2\\dir\\2', 'E:\\Studypython\\py2\\dir\\controller'] # ['E:\\Studypython\\py2\\dir\\2', 'E:\\Studypython\\py2\\dir\\controller', 'E:\\Studypython\\py2\\dir\\models'] # ['E:\\Studypython\\py2\\dir\\2', 'E:\\Studypython\\py2\\dir\\controller', 'E:\\Studypython\\py2\\dir\\models', 'E:\\Studypython\\py2\\dir\\node_modules'] # ['E:\\Studypython\\py2\\dir\\2', 'E:\\Studypython\\py2\\dir\\controller', 'E:\\Studypython\\py2\\dir\\models', 'E:\\Studypython\\py2\\dir\\node_modules', 'E:\\Studypython\\py2\\dir\\public'] else: 打印普通文件 print("普通文件--"+fileName) # 普通文件--.project # 普通文件--app.js # 普通文件--package.json # 普通文件--album.ejs # 普通文件--err.ejs # 普通文件--index.ejs # 普通文件--1 - 副本.jpg # 普通文件--1.jpg # 普通文件--2 - 副本.jpg # 普通文件--2.jpg # 普通文件--3 - 副本.jpg # 普通文件--3.jpg # 普通文件--4 - 副本.jpg # 普通文件--4.jpg # 普通文件--5 - 副本.jpg # 普通文件--5.jpg # 普通文件--bootstrap.js # 普通文件--bootstrap.min.js # 普通文件--jquery-1.12.4.js # 普通文件--npm.js # 普通文件--1.jpg # 普通文件--2.jpg # 普通文件--4.png getAllDirDE(r"E:\Studypython\py2\dir")
# 隊列就是先進去的 就先走 至關於排隊 spa
import collections import os # 隊列是先進先出 def aa(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) #print(fileAbsPath) # E:\Studypython\py2\dir\.project # E:\Studypython\py2\dir\2 # E:\Studypython\py2\dir\app.js # E:\Studypython\py2\dir\controller # E:\Studypython\py2\dir\models # E:\Studypython\py2\dir\node_modules # E:\Studypython\py2\dir\package.json # E:\Studypython\py2\dir\public # E:\Studypython\py2\dir\uploads # E:\Studypython\py2\dir\views # 判斷是否爲目錄 if os.path.isdir(fileAbsPath): print("目錄-----"+fileName) #目錄-----controller # 目錄-----models # 目錄-----node_modules queue.append(fileAbsPath) else: print("普通文件-----"+fileName) # 普通文件-----index.js # 普通文件-----callsite-tostring.js # 普通文件-----event-listener-count.js # 普通文件-----index.js aa(r"E:\Studypython\py2\dir")