那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python支持遞歸函數

jf_78858299 ? 來源:人工智能知識分享 ? 作者:人工智能知識分享 ? 2023-02-21 14:28 ? 次閱讀

Python支持遞歸函數——即直接或間接地調用自身以進行循環的函數。遞歸是頗為高級的話題,并且它在Python中相對少見。然而,它是一項應該了解的有用的技術,因為它允許程序遍歷擁有任意的、不可預知的形狀的結構。遞歸甚至是簡單循環和迭代的替換,盡管它不一定是最簡單的或最高效的一種。

要對一個數字列表(或者其他序列)求和,我們可以使用內置的sum函數,或者自己編寫一個更加定制化的版本。這里我們就用遞歸來編寫一個定制求和函數:

def mysum(L):

... if not L:

... return 0

... else:

... return L[0] + mysum(L[1:]) # Call myself

mysum([1,2,3,4,5])

15

在每一層,這個函數都遞歸地調用自己來計算列表剩余的值的和,這個和隨后加到前面的一項中。當列表變為空的時候,遞歸循環結束并返回0。當像這樣使用遞歸的時候,對函數調用的每一個打開的層級,在運行時調用堆棧上都有自己的一個函數本地作用域的副本,也就是說,這意味著L在每個層級都是不同的。

這很難理解(并且對于新程序員來說,它常常是難以理解),下面我們嘗試給函數添加一個L的打印并再次運行它,從而在每個調用層級記錄下當前的列表:

def mysum(L):

... print(L) # Trace recursive levels

... if not L: # L shorter at each level

... return 0

... else:

... return L[0] + mysum(L[1:])

...

mysum([1,2,3,4,5])

[1,2,3,4,5]

[2,3,4,5]

[3,4,5]

[4,5]

[5]

[]

15

正如你所看到的,在每個遞歸層級上,要加和的列表變得越來越小,直到它變為空——遞歸循環結束。加和隨著遞歸調用的展開而計算出來。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62968
  • 循環
    +關注

    關注

    0

    文章

    92

    瀏覽量

    16039
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85037
收藏 人收藏

    評論

    相關推薦

    快速掌握Python遞歸函數與匿名函數調用

    函數Python技術學習中重要的一個環節,深入掌握該階段的知識內容,對于Python技術能力的提升非常有幫助,這里就針對遞歸函數與匿名
    發表于 07-19 16:22

    Labview遞歸函數的使用案例

    Labview遞歸函數的使用案例,簡單的1+2+3...+100求和,簡單易懂,充分理解遞歸函數的思想
    發表于 10-09 09:37

    C++教程之函數遞歸調用

    C++教程之函數遞歸調用 在執行函數 f 的過程中,又要調用 f 函數本身,稱為函數遞歸調
    發表于 05-15 18:00 ?35次下載

    遞歸指的是在函數的定義中使用函數自身的方法

    C語言支持遞歸,即一個函數可以調用其自身。但在使用遞歸時,程序員需要注意定義一個從函數退出的條件,否則會進入死循環。
    的頭像 發表于 11-12 15:06 ?7179次閱讀

    C++的實驗教程之函數遞歸算法資料免費下載

    函數遞歸算法 1.范例:求組合數, 一、實驗目的1. 學會解決簡單的遞歸算法。2. 掌握函數的嵌套調用。
    發表于 01-29 10:51 ?2次下載
    C++的實驗教程之<b class='flag-5'>函數</b>的<b class='flag-5'>遞歸</b>算法資料免費下載

    C語言-內聯函數遞歸函數、指針函數

    這篇文章介紹C語言的內聯函數遞歸函數函數指針、指針函數、局部地址、const關鍵字、extern關鍵字等知識點;這些知識點在實際項目開發
    的頭像 發表于 08-14 10:03 ?1731次閱讀

    Python-函數的進階與遞歸

    在程序開發中,有時候,會希望一個函數執行結束后,告訴調用者 **一個結果** ,以便調用者針對結果作后續的處理,返回值是函數完成工作后,最后給調用者的一個結果,在函數中使用 return 關鍵字可以返回結果,**調用者** 可以
    的頭像 發表于 02-16 15:19 ?804次閱讀
    <b class='flag-5'>Python</b>-<b class='flag-5'>函數</b>的進階與<b class='flag-5'>遞歸</b>

    Python入門之什么是函數

    Python函數比我們想象的更為靈活。由于Python函數是對象,所以函數對象可以賦值給其他的名字、傳遞給其他
    的頭像 發表于 02-21 14:24 ?528次閱讀

    函數遞歸-3

    程序調用自身的編程技巧稱為遞歸(recursion)。遞歸作為一種算法在程序設計語言中廣泛應用。一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型復雜的問題層層轉化為一個
    的頭像 發表于 02-21 15:57 ?622次閱讀

    什么是Python遞歸函數

    遞歸函數必須有終止條件。編程中,函數的調用要占用名叫棧(stack)的內存空間。調用函數時,程序會將相關的數據存儲到計算機的棧里。
    的頭像 發表于 02-23 10:25 ?1886次閱讀

    C語言,你真的懂遞歸了嗎?

    要說到遞歸如果不說棧的話,我覺得有點不合適,遞歸特點就是不斷的調用同一個函數,如果這個函數沒有一個遞歸界限,那么就是死循環了,所以討論
    的頭像 發表于 06-06 15:24 ?1065次閱讀
    C語言,你真的懂<b class='flag-5'>遞歸</b>了嗎?

    python函數返回多個參數

    函數是程序設計中的一個重要概念,在很多編程語言中都存在。函數可以接受輸入數據,并且根據輸入數據進行一系列操作,最后可以返回一個或多個結果。Python是一種非常流行的編程語言,也支持
    的頭像 發表于 11-21 16:37 ?1362次閱讀

    不屬于python的內置函數

    Python是一種高級編程語言,它提供了許多內置函數,可以幫助開發人員更輕松地處理各種任務。但是,在Python中并非所有的函數都是內置函數
    的頭像 發表于 11-29 14:27 ?1577次閱讀

    關于C語言中的遞歸

    遞歸指的是在函數的定義中使用函數自身的方法。
    發表于 02-26 10:34 ?432次閱讀
    關于C語言中的<b class='flag-5'>遞歸</b>

    Python遞歸的經典案例

    當我們碰到諸如需要求階乘或斐波那契數列的問題時,使用普通的循環往往比較麻煩,但如果我們使用遞歸時,會簡單許多,起到事半功倍的效果。這篇文章主要和大家分享一些和遞歸有關的經典案例,結合一些資料談一下個人的理解,也借此加深自己對遞歸
    的頭像 發表于 08-05 15:57 ?391次閱讀
    棋牌百家乐官网怎么玩| 百家乐五局八星| 凱旋门百家乐的玩法技巧和规则 | 百家乐官网三珠连跳打法| 百家乐娱乐城优惠| 12bet| 百家乐官网下注技巧| 大发888游戏平台 46| 金樽百家乐官网的玩法技巧和规则| 大发888娱乐场游戏下载| 百家乐官网台布哪里有卖| 大发888扑克官方下载| 百家乐官网赌博技巧论坛| 免费百家乐预测软件| 至尊百家乐官网奇热| 百家乐的保单打法| 毕节市| 破解百家乐游戏机| 子长县| 百家乐博娱乐网| 百家乐官网现金网平台排行| 至富百家乐的玩法技巧和规则| 怎样看百家乐官网路纸| 大发888怎么玩才赢| 欧洲百家乐官网的玩法技巧和规则| 博彩网站排行| 稳赢的百家乐投注方法| 百家乐官网娱乐分析软| 小孟百家乐的玩法技巧和规则| 网络百家乐官网赌博视频| 大发888英皇国际| 百家乐官网技巧看| 真人百家乐| 百家乐投注很好| 九游棋牌大厅| 百家乐最常见的路子| 百家乐官网辅助分析软件| 全讯网3344666| 24山向方位| 百家乐官网玩法秘决| 缅甸百家乐赌博有假吗|