好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > python基礎學習之遞歸函數知識總結

python基礎學習之遞歸函數知識總結

熱門標簽:河北防封卡電銷卡 應電話機器人打電話違法嗎 400電話辦理哪種 手機網頁嵌入地圖標注位置 開封自動外呼系統怎么收費 開封語音外呼系統代理商 天津電話機器人公司 地圖標注線上如何操作 電銷機器人的風險

一、遞歸函數使用注意點

遞歸函數一定要編寫終止條件,否則將產生無限遞歸。(死循環)

二、遞歸的效率問題

  • 遞歸效率不高,遞歸層次過多會導致棧溢出。
  • Python中不推薦使用遞歸。

三、遞歸函數引入

"""
使用代碼循環輸出故事:從前有座山,山里有座廟...
"""
# ------------while循環 (暫時忽略死循環)---------------
while True:
    print("從前有座山,山里有座廟...")

# ---------------通過定義一個方法, 在while循環里面調用實現( 暫時忽略死循環)---------------
def func_story():
    print("從前有座山,山里有座廟...")

while True: 
    func_story()

# ---------------使用遞歸的方法實現循環---------------
def story():
    print("從前有座山,山里有座廟...")
    story()

story()
# 報錯:RecursionError: maximum recursion depth exceeded while calling a Python object

四、遞歸的深度

這里就引申到一個遞歸的最大深度。

import sys

# 獲取最大遞歸深度
res = sys.getrecursionlimit()
print(res) # 輸出:1000

# 遞歸最大深度:
def func(n):
    print(n)
    n += 1
    func(n)


func(1)  # python 3 打印到998就停止打印了

我們可以設置遞歸的最大深度。但是能夠達到的最大深度,跟電腦配置也有關系:

import sys

# 設置遞歸的深度
sys.setrecursionlimit(10000)


# 遞歸最大深度:
def func(n):
    print(n)
    n += 1
    func(n)


func(1)  # python 3 打印到3221就停止打印了

五、通過緩存解決遞歸限制

通過緩存解決最大遞歸限制的問題:

  • Python的functools模塊中提供了很多高階函數的操作。
  • lru_cache:緩存功能裝飾器,能夠緩存相同參數的函數調用結果,可以節約高開銷或I/O函數的調用時間。
  • 通過lru_cache裝飾遞歸函數


 

六、遞歸函數使用示例

遞歸函數示例一:

# 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

遞歸函數示例二:打印三級菜單

# 我們有一個這樣的三級菜單
menu = {
    "功能測試": {
        "用例管理": {
            "添加用例": {},
            "刪除用例": {},
            "復制用例": {}
        },
        "元素管理": {
            "添加元素": {},
            "刪除元素": {},
            "復制元素": {}
        },
    },
    "接口測試": {
        "API管理": {
            "添加api": {},
            "刪除api": {},
            "復制api": {}
        },
        "環境管理": {
            "添加環境": {},
            "刪除環境": {},
            "復制環境": {}
        },
    },
}

def query_menu(menu:dict):
    """
    一級級查詢菜單信息
    :return:
    """
    # 用戶輸入q退出
    while True:
        for k in menu:print(f"當前菜單:{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)

輸出結果:

到此這篇關于python基礎學習之遞歸函數知識總結的文章就介紹到這了,更多相關python遞歸函數內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python中的np.argmin()和np.argmax()函數用法
  • Python函數參數和注解的使用
  • python中os.path.join()函數實例用法
  • 淺談Python中的函數(def)及參數傳遞操作
  • python 定義函數 返回值只取其中一個的實現
  • python print()函數的end參數和sep參數的用法說明
  • python處理emoji表情(兩個函數解決兩者之間的聯系)
  • Python基礎學習之簡單理解函數

標簽:蘭州 駐馬店 六盤水 江蘇 山東 成都 宿遷 常州

巨人網絡通訊聲明:本文標題《python基礎學習之遞歸函數知識總結》,本文關鍵詞  python,基礎,學,習之,遞歸,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python基礎學習之遞歸函數知識總結》相關的同類信息!
  • 本頁收集關于python基礎學習之遞歸函數知識總結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产AV?白丝?欧美小说| 猛男GayGay?免费网站漫画| 美国黄色一级电影| 色综合久久五月色婷婷心悦网| 欧美一级婬片AAAAAAA欠钱| 国产国语一级毛片全部| 免费婬乱AAA大片女人添比 | 玖玖精品| 大乳boobs巨爆乳hd| 久久中国精品| 欧美黑人50巨大v| 久久亚洲国产成人影院| 激情婷婷成人亚洲综合| 韩剧妈妈的朋友6观看| www.日韩精品| 欧美肉欲XXⅩOOO| 亚洲 欧美 另类 综合 偷拍| 希希子口舌调教视频丨vk| 国产片精品电影www| 女bbbbxxxx毛片视频0| 97超碰久久中文字幕女王| 麻豆秘?在线观看国产| 国产精品柳州莫菁在线观看| 武则天一级淫片免费看| 我把农村寡妇日出好多水| 美国一级AAAAAA片| 调教已婚妇女在线| 色琪影院| 日本一级二级三级| 国产伦精品一区二区三区免费视频 | 国产AV天堂亚洲AV麻豆| 日本a天堂| 亚州无线乱码天堂熟女教师| 精品人妻一区二区三区四区久久 | 日本区二区三区四区的区别| 久久99深爱久久99精品 | 国产综合欧美日韩视频一区| 调教男子锁尿肉锁精h| 一级特黄录像视频| 日韩精品Av一区二区99久| 黄色美容院在线|