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

Python3基礎教程之遞歸函數(shù)簡單示例

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

概述

遞歸函數(shù)即直接或間接調用自身的函數(shù),且遞歸過程中必須有一個明確的遞歸結束條件,稱為遞歸出口。遞歸極其強大一點就是能夠遍歷任意的,不可預知的程序的結構,比如遍歷復雜的嵌套列表。

遞歸求和

我們可以利用遞歸函數(shù)實現(xiàn)一個Python內置函數(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)

示例結果

45

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

# 遞歸
def d_sum(L):
  # 打印該層級L
  print(L)
  if not L:
    return 0
  else:
    return L[0] + d_sum(L[1:])
# 構建 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

處理任意結構

比如我們可以利用遞歸計算一個嵌套的子列表結構中所有數(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)

示例結果:

45

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • Python列表推導式與生成器用法分析

    Python列表推導式與生成器用法分析

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

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

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

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

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

    在pycharm中文件取消用 pytest模式打開的操作

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

    Python的控制結構之For、While、If循環(huán)問題

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

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

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

    Python的列表推導式實例詳細解析

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

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

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

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

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

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

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

最新評論