欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年05月26日 11:55:14   作者:florachy  
在函數中調用函數自身,我們把這樣的函數叫做遞歸函數, 遞歸函數就是循環(huán)的調用,類似于俄羅斯套娃,本文給各位小伙伴詳細介紹了python遞歸函數,需要的朋友可以參考下

一、遞歸函數使用注意點

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

二、遞歸的效率問題

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

三、遞歸函數引入

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

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

while True: 
    func_story()

# ---------------使用遞歸的方法實現循環(huán)---------------
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:緩存功能裝飾器,能夠緩存相同參數的函數調用結果,可以節(jié)約高開銷或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": {}
        },
        "環(huán)境管理": {
            "添加環(huán)境": {},
            "刪除環(huán)境": {},
            "復制環(huán)境": {}
        },
    },
}

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遞歸函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • selenium常用API的使用過程記錄(包括自動登錄)

    selenium常用API的使用過程記錄(包括自動登錄)

    selenium是一個自動測試工具,它可以幫我通過代碼去實現驅動瀏覽器自動執(zhí)行相應的操作,所以我們也可以用它來做爬蟲,主要使用selenium的目的是為了跳過登錄驗證,這篇文章主要介紹了selenium的使用過程記錄,已經常用API接口(包括自動登錄)
    2024-02-02
  • python?rpyc客戶端調用服務端方法的注意說明

    python?rpyc客戶端調用服務端方法的注意說明

    這篇文章主要介紹了python?rpyc客戶端調用服務端方法的注意說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • TensorFlow人工智能學習按索引取數據及維度變換詳解

    TensorFlow人工智能學習按索引取數據及維度變換詳解

    這篇文章主要為大家介紹了TensorFlow人工智能學習按索引取數據及維度變換的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • Python3.6實現連接mysql或mariadb的方法分析

    Python3.6實現連接mysql或mariadb的方法分析

    這篇文章主要介紹了Python3.6實現連接mysql或mariadb的方法,結合實例形式分析了Python3.6針對mysql或mariadb數據庫操作的相關模塊安裝、數據庫與表的創(chuàng)建、數據庫連接等操作技巧與注意事項,需要的朋友可以參考下
    2018-05-05
  • Django模板標簽{% for %}循環(huán),獲取制定條數據實例

    Django模板標簽{% for %}循環(huán),獲取制定條數據實例

    這篇文章主要介紹了Django模板標簽{% for %}循環(huán),獲取制定條數據實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python 讀寫文件,按行修改文件的方法

    python 讀寫文件,按行修改文件的方法

    今天小編就為大家分享一篇python 讀寫文件,按行修改文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python中partial()基礎用法說明

    python中partial()基礎用法說明

    這篇文章主要給大家介紹了關于python中partial()基礎用法的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面來一起看看吧
    2018-12-12
  • Python3調用百度AI識別圖片中的文字功能示例【測試可用】

    Python3調用百度AI識別圖片中的文字功能示例【測試可用】

    這篇文章主要介紹了Python3調用百度AI識別圖片中的文字功能,結合實例形式分析了Python3安裝及使用百度AI接口的相關操作技巧,并附帶說明了百度官方AI平臺的注冊及接口調用操作方法,需要的朋友可以參考下
    2019-03-03
  • 詳解python深淺拷貝區(qū)別

    詳解python深淺拷貝區(qū)別

    在本篇文章里小編給大家整理了關于python深淺拷貝區(qū)別的相關知識點總結,有興趣的朋友們可以參考下。
    2019-06-06
  • Python Pandas的簡單使用教程

    Python Pandas的簡單使用教程

    Pandas 是python的一個數據分析包,最初由AQR Capital Management于2008年4月開發(fā),并于2009年底開源出來,目前由專注于Python數據包開發(fā)的PyData開發(fā)team繼續(xù)開發(fā)和維護,今天通過本文給大家介紹Python Pandas的簡單使用教程,感興趣的朋友一起看看吧
    2021-08-08

最新評論