專注搜索競(jìng)價(jià)代運(yùn)營(yíng)

成長(zhǎng)之選 ,效果之道!

免費(fèi)咨詢熱線:17636682598

遞歸函數(shù)python簡(jiǎn)單實(shí)例詳解

所有的編程語(yǔ)言都有遞歸函數(shù),遞歸指的是一個(gè)過(guò)程:函數(shù)不斷引用自身,直到引用的對(duì)象不滿足條件為結(jié)束。可以直接理解為:遞歸就是在函數(shù)內(nèi)部調(diào)用自己的函數(shù)被稱之為遞歸

函數(shù)的遞歸調(diào)用原理

實(shí)際上遞歸函數(shù)是在棧內(nèi)存上遞歸執(zhí)行的,每次遞歸執(zhí)行一次就會(huì)耗費(fèi)一些棧內(nèi)存。棧內(nèi)存的大小是限制遞歸深度的重要因素

遞歸函數(shù)的優(yōu)點(diǎn)

定義簡(jiǎn)單,邏輯清晰。理論上,所有的遞歸函數(shù)都可以寫成循環(huán)的方式,但循環(huán)的邏輯不如遞歸清晰。

遞歸函數(shù)的缺點(diǎn)

使用遞歸方式需要函數(shù)做大量的壓棧和彈棧操作,由于壓棧和彈棧涉及函數(shù)執(zhí)行上下文(context)的現(xiàn)場(chǎng)保存和現(xiàn)場(chǎng)恢復(fù),所以程序的運(yùn)行速度比不用遞歸實(shí)現(xiàn)要慢。

此外,大量的堆棧操作消耗的內(nèi)存資源要比非遞歸調(diào)用多。而且,過(guò)深的遞歸調(diào)用還可能會(huì)導(dǎo)致堆棧溢出。如果操作不慎,還容易出現(xiàn)死循環(huán)。因此讀者編寫代碼時(shí)需要多加注意,一定要設(shè)置遞歸操作的終止條件。

Python遞歸函數(shù)實(shí)例詳解

業(yè)務(wù)需求:遍歷arr列表,打印所有的值用遞歸函數(shù)實(shí)現(xiàn)

  1. arr=[1,[2,3]] 
  2. def digui(arr): 
  3.     if type(arr)==list: 
  4.         for i in arr: 
  5.             if type(i)==list: 
  6.                 digui(i) 
  7.             else
  8.                 print(i) 
  9.  
  10. digui(arr) 


代碼中,判斷值如果還是列表就調(diào)用自身實(shí)現(xiàn)循環(huán)判斷、打印

本文分類:營(yíng)銷學(xué)院

瀏覽次數(shù):52次瀏覽

發(fā)布日期:2022-07-20 10:45:27

本文鏈接:http://www.ozone-depletion.net/edu/2434.html