遞歸函數(shù)一定要編寫終止條件,否則將產(chǎn)生無(wú)限遞歸。(死循環(huán))
""" 使用代碼循環(huán)輸出故事:從前有座山,山里有座廟... """ # ------------while循環(huán) (暫時(shí)忽略死循環(huán))--------------- while True: print("從前有座山,山里有座廟...") # ---------------通過定義一個(gè)方法, 在while循環(huán)里面調(diào)用實(shí)現(xiàn)( 暫時(shí)忽略死循環(huán))--------------- def func_story(): print("從前有座山,山里有座廟...") while True: func_story() # ---------------使用遞歸的方法實(shí)現(xiàn)循環(huán)--------------- def story(): print("從前有座山,山里有座廟...") story() story() # 報(bào)錯(cuò):RecursionError: maximum recursion depth exceeded while calling a Python object
這里就引申到一個(gè)遞歸的最大深度。
import sys # 獲取最大遞歸深度 res = sys.getrecursionlimit() print(res) # 輸出:1000 # 遞歸最大深度: def func(n): print(n) n += 1 func(n) func(1) # python 3 打印到998就停止打印了
我們可以設(shè)置遞歸的最大深度。但是能夠達(dá)到的最大深度,跟電腦配置也有關(guān)系:
import sys # 設(shè)置遞歸的深度 sys.setrecursionlimit(10000) # 遞歸最大深度: def func(n): print(n) n += 1 func(n) func(1) # python 3 打印到3221就停止打印了
通過緩存解決最大遞歸限制的問題:
遞歸函數(shù)示例一:
# 18 20 22 24 def age(n): if n == 1: return 18 else: return age(n-1) + 2 print(age(1)) # 輸出:18 print(age(2)) # 輸出:20 print(age(3)) # 輸出:22 print(age(4)) # 輸出:24
遞歸函數(shù)示例二:打印三級(jí)菜單
# 我們有一個(gè)這樣的三級(jí)菜單 menu = { "功能測(cè)試": { "用例管理": { "添加用例": {}, "刪除用例": {}, "復(fù)制用例": {} }, "元素管理": { "添加元素": {}, "刪除元素": {}, "復(fù)制元素": {} }, }, "接口測(cè)試": { "API管理": { "添加api": {}, "刪除api": {}, "復(fù)制api": {} }, "環(huán)境管理": { "添加環(huán)境": {}, "刪除環(huán)境": {}, "復(fù)制環(huán)境": {} }, }, } def query_menu(menu:dict): """ 一級(jí)級(jí)查詢菜單信息 :return: """ # 用戶輸入q退出 while True: for k in menu:print(f"當(dāng)前菜單:{k}") key = input(">>>").strip() if key == "q": return key elif key in menu.keys() and menu[key]: res = query_menu(menu[key]) if res == "q": return "q" query_menu(menu)
輸出結(jié)果:
到此這篇關(guān)于python基礎(chǔ)學(xué)習(xí)之遞歸函數(shù)知識(shí)總結(jié)的文章就介紹到這了,更多相關(guān)python遞歸函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:蘭州 駐馬店 六盤水 江蘇 山東 成都 宿遷 常州
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python基礎(chǔ)學(xué)習(xí)之遞歸函數(shù)知識(shí)總結(jié)》,本文關(guān)鍵詞 python,基礎(chǔ),學(xué),習(xí)之,遞歸,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。