亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

瓮安县| 枣阳市| 平阴县| 公主岭市| 博乐市| 峨眉山市| 嵊泗县| 栖霞市| 贵德县| 奎屯市| 武隆县| 德钦县| 安康市| 教育| 迁西县| 石首市| 马关县| 克什克腾旗| 舟山市| 阿拉善盟| 克山县| 鸡泽县| 恭城| 错那县| 雅江县| 天柱县| 衡南县| 辽阳市| 邯郸县| 福鼎市| 丹东市| 镇原县| 永泰县| 通榆县| 永德县| 和林格尔县| 光山县| 五寨县| 张北县| 佳木斯市| 金湖县|