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

Python3基礎(chǔ)教程之遞歸函數(shù)簡(jiǎn)單示例

 更新時(shí)間:2019年06月07日 10:17:38   作者:若數(shù)  
這篇文章主要給大家介紹了關(guān)于Python3基礎(chǔ)教程之遞歸函數(shù)簡(jiǎn)單示例的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

概述

遞歸函數(shù)即直接或間接調(diào)用自身的函數(shù),且遞歸過(guò)程中必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口。遞歸極其強(qiáng)大一點(diǎn)就是能夠遍歷任意的,不可預(yù)知的程序的結(jié)構(gòu),比如遍歷復(fù)雜的嵌套列表。

遞歸求和

我們可以利用遞歸函數(shù)實(shí)現(xiàn)一個(gè)Python內(nèi)置函數(shù)sum()的遞歸版。

# 遞歸
def d_sum(L):
  if not L:
    return 0
  else:
    return L[0] + d_sum(L[1:])

sum_l = d_sum(range(10))
print(sum_l)

示例結(jié)果

45

該遞歸函數(shù)怎么實(shí)現(xiàn)列表元素相加的呢? 我們知道函數(shù)是有本地作用域的,對(duì)函數(shù)調(diào)用的每一個(gè)打開(kāi)的時(shí)候,在運(yùn)行時(shí)調(diào)用堆棧上都有自己的一個(gè)本地作用域的副本,即L在每個(gè)層級(jí)都是不同的,比如我們可以通過(guò)每次調(diào)用時(shí)添加一個(gè)打印語(yǔ)句,更加直觀展示每個(gè)層級(jí)L的情況

# 遞歸
def d_sum(L):
  # 打印該層級(jí)L
  print(L)
  if not L:
    return 0
  else:
    return L[0] + d_sum(L[1:])
# 構(gòu)建 0-10 數(shù)字元素列表
L = [i for i in range(10)]
sum_l = d_sum(L)
print(sum_l)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
[4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]
[6, 7, 8, 9]
[7, 8, 9]
[8, 9]
[9]
[]
45

處理任意結(jié)構(gòu)

比如我們可以利用遞歸計(jì)算一個(gè)嵌套的子列表結(jié)構(gòu)中所有數(shù)字的總和

def dd_sum(L):
  tot = 0
  for x in L:
    if not isinstance(x, list):
      tot += x
    else:
      tot += dd_sum(x)
  return tot

# 嵌套列表
L = [1,[2,3],[4,[5,6,7],8],9]
sum_l = dd_sum(L)
print(sum_l)

示例結(jié)果:

45

這種處理方式看似復(fù)雜,我們可能更多會(huì)利用循環(huán)語(yǔ)句替代,但是使用遞歸函數(shù)邏輯簡(jiǎn)單清晰,這是使用的一大優(yōu)點(diǎn)。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Python列表推導(dǎo)式與生成器用法分析

    Python列表推導(dǎo)式與生成器用法分析

    這篇文章主要介紹了Python列表推導(dǎo)式與生成器用法,結(jié)合實(shí)例形式分析了列表推導(dǎo)式、生成器的原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • python pow函數(shù)的底層實(shí)現(xiàn)原理介紹

    python pow函數(shù)的底層實(shí)現(xiàn)原理介紹

    這篇文章主要介紹了python pow函數(shù)的底層實(shí)現(xiàn)原理介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • python+tkinter實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    python+tkinter實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python+tkinter實(shí)現(xiàn)學(xué)生管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 在pycharm中文件取消用 pytest模式打開(kāi)的操作

    在pycharm中文件取消用 pytest模式打開(kāi)的操作

    這篇文章主要介紹了在pycharm中文件取消用 pytest模式打開(kāi)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Python的控制結(jié)構(gòu)之For、While、If循環(huán)問(wèn)題

    Python的控制結(jié)構(gòu)之For、While、If循環(huán)問(wèn)題

    這篇文章主要介紹了Python的控制結(jié)構(gòu)之For、While、If循環(huán)問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python代碼實(shí)現(xiàn)AVL樹(shù)和紅黑樹(shù)

    python代碼實(shí)現(xiàn)AVL樹(shù)和紅黑樹(shù)

    專注于Python數(shù)據(jù)結(jié)構(gòu),想要深入了解AVL樹(shù)和紅黑樹(shù)的讀者們,你們的機(jī)會(huì)來(lái)了!在這篇指南中,我們將帶你探索這兩種神奇樹(shù)結(jié)構(gòu)的奧秘,緊張刺激的實(shí)戰(zhàn)代碼演示,讓你一窺這兩種樹(shù)的獨(dú)特魅力,準(zhǔn)備好了嗎?讓我們一起踏上這場(chǎng)Python樹(shù)結(jié)構(gòu)之旅!
    2023-12-12
  • Python的列表推導(dǎo)式實(shí)例詳細(xì)解析

    Python的列表推導(dǎo)式實(shí)例詳細(xì)解析

    這篇文章主要介紹了Python的列表推導(dǎo)式實(shí)例詳細(xì)解析,列表推導(dǎo)式是Python構(gòu)建列表list的一種快捷方式,可以使用簡(jiǎn)潔的代碼就創(chuàng)建出一個(gè)列表,需要的朋友可以參考下
    2023-07-07
  • Django中更新多個(gè)對(duì)象數(shù)據(jù)與刪除對(duì)象的方法

    Django中更新多個(gè)對(duì)象數(shù)據(jù)與刪除對(duì)象的方法

    這篇文章主要介紹了Django中更新多個(gè)對(duì)象數(shù)據(jù)與刪除對(duì)象的方法,Django是Python重多各色框架中人氣最高的一個(gè),需要的朋友可以參考下
    2015-07-07
  • 如何基于python實(shí)現(xiàn)不鄰接植花

    如何基于python實(shí)現(xiàn)不鄰接植花

    這篇文章主要介紹了如何基于python實(shí)現(xiàn)不鄰接植花,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • beam search及pytorch的實(shí)現(xiàn)方式

    beam search及pytorch的實(shí)現(xiàn)方式

    這篇文章主要介紹了beam search及pytorch的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05

最新評(píng)論