91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中如何實現遞歸函數

發布時間:2021-12-14 17:20:06 來源:億速云 閱讀:181 作者:小新 欄目:大數據

這篇文章主要介紹Python中如何實現遞歸函數,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

1、什么是遞歸函數

之前介紹了如何創建和調用函數。你知道,函數可調用其他函數,但可能讓你感到驚訝的是,函數還可調用自己。如果你以前沒有遇到這種情況,可能想知道遞歸是什么意思。簡單地說,遞歸意味著引用(這里是調用)自身。

2、python遞歸函數

下面是一個遞歸式函數定義:

def recursion():

    return recursion()

這個定義顯然什么都沒有做,與剛才的“遞歸”定義一樣傻。如果你運行它,結果將如何呢?你將發現運行一段時間后,這個程序崩潰了(引發異常)。從理論上說,這個程序將不斷運行下去,但每次調用函數時,都將消耗一些內存。因此函數調用次數達到一定的程度(且之前的函數調用未返回)后,將耗盡所有的內存空間,導致程序終止并顯示錯誤消息“超過大遞歸深度”

你想要的是能對你有所幫助的遞歸函 數,這樣的遞歸函數通常包含下面兩部分。

  • 基線條件(針對小的問題):滿足這種條件時函數將直接返回一個值。 

  • 遞歸條件:包含一個或多個調用,這些調用旨在解決問題的一部分。

這里的關鍵是,通過將問題分解為較小的部分,可避免遞歸沒完沒了,因為問題終將被分解成基線條件可以解決的小問題。

3、python遞歸函數

那么如何讓函數調用自身呢?這沒有看起來那么難懂。前面說過,每次調用函數時,都將為此創建一個新的命名空間。這意味著函數調用自身時,是兩個不同的函數[更準確地說,是不同版本(即命名空間不同)的同一個函數]在交流。

經典案例1,計算數字n的階乘。n的階乘為n × (n-1)× (n-2) ×… × 1,在數學領域的用途非常廣泛。

可使用循環。這種實現可行,而且直截了當。

deffactorial(n):

    result = n

for i in range(1, n):

     result *= i

return result

下面來考慮如何使用函數來實現這個定義。理解這個定義后,實現起來其實非常簡單。 def factorial(n):

if n == 1:

    return 1

else:

    return n * factorial(n -1)

這是前述定義的直接實現,只是別忘了函數調用factorial(n)和factorial(n–1)是不同的 實體。

經典案例2、計算一個數冪,就像內置函數pow和運算符**所做的那樣。要定義一個數字的整數次冪,有多種方式,但先來看一個簡單的定義:power(x, n)(x的n次冪)是將數字x自乘n - 1次的結果,即將n個x相乘的結果。換而言之,power(2, 3)是2自乘兩次的結果,即2 × 2 × 2 = 8。

這實現起來很容易。

def power(x, n):

    result = 1

  for i in range(n):

     result *= x

return result 這是一個非常簡單的小型函數,但也可將定義修改成遞歸式的。

對于任何數字x,power(x, 0)都為1。n>0時,power(x, n)為power(x,n-1)與x的乘積。這種定義提供的結果與更簡單的迭代定義完全相同。理解定義是難的,而實現起來很容易。

 def power(x, n):

    if n == 0:

        return1

    else: 

       return x* power(x, n - 1)

4、為什么要使用遞歸函數

    大多數情況下,使用循環的效率可能更高。然而,在很多情況下,使用遞歸的可讀性更高,且有時要高得多,在你理解了函數的遞歸式定義時尤其如此。另外,雖然你完全能夠避免編寫遞歸函數,但作為程序員,你必須能夠讀懂其他人編寫的遞歸算法和函數。

以上是“Python中如何實現遞歸函數”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滦南县| 拜泉县| 闽侯县| 岫岩| 扶绥县| 微博| 井冈山市| 达孜县| 稷山县| 十堰市| 会理县| 门源| 富阳市| 雅安市| 玉林市| 拉孜县| 高陵县| 新龙县| 枞阳县| 乌鲁木齐市| 大荔县| 即墨市| 景东| 茶陵县| 和林格尔县| 新晃| 永春县| 阿坝县| 红桥区| 桦南县| 苍梧县| 灵武市| 安图县| 日照市| 海口市| 宜良县| 扶绥县| 宁南县| 淅川县| 青田县| 襄汾县|