91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

      手機(jī)站
      千鋒教育

      千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

      千鋒教育

      掃一掃進(jìn)入千鋒手機(jī)站

      領(lǐng)取全套視頻
      千鋒教育

      關(guān)注千鋒學(xué)習(xí)站小程序
      隨時隨地免費(fèi)學(xué)習(xí)課程

      當(dāng)前位置:首頁  >  技術(shù)干貨  > python函數(shù)遞歸

      python函數(shù)遞歸

      來源:千鋒教育
      發(fā)布人:xqq
      時間: 2023-11-09 22:44:58 1699541098

      python函數(shù)遞歸:

      在一個函數(shù)體內(nèi)調(diào)用它自身,被稱為函數(shù)遞歸。函數(shù)遞歸包含了一種隱式的循環(huán),它會重復(fù)執(zhí)行某段代碼,但這種重復(fù)執(zhí)行無須循環(huán)控制。

      例如有如下數(shù)學(xué)題。己知有一個數(shù)列:f(0)=1,f(1)=4,f(n+2)=2*f(n+1)+f(n),其中n是大于0的整數(shù),求f(10)的值。這道題可以使用遞歸來求得。下面程序?qū)⒍x一個fn()函數(shù),用于計(jì)算f(10)的值。

      deffn(n):

      ifn==0:

      return1

      elifn==1:

      return4

      else:

      #函數(shù)中調(diào)用它自身,就是函數(shù)遞歸

      return2*fn(n-1)+fn(n-2)

      #輸出fn(10)的結(jié)果

      print("fn(10)的結(jié)果是:",fn(10))

      在上面的fn()函數(shù)體中再次調(diào)用了fn()函數(shù),這就是函數(shù)遞歸。注意在fn()函數(shù)體中調(diào)用fn的形式:

      return2*fn(n-1)+fn(n-2)

      對于fn(10),即等于2*fn(9)+fn(8),其中fn(9)又等于2*fn(8)+fn(7)……依此類推,最終會計(jì)算到fn(2)等于2*fn(1)+fn(0),即fn(2)是可計(jì)算的,這樣遞歸帶來的隱式循環(huán)就有結(jié)束的時候,然后一路反算回去,最后就可以得到fn(10)的值。

      仔細(xì)看上面遞歸的過程,當(dāng)一個函數(shù)不斷地調(diào)用它自身時,必須在某個時刻函數(shù)的返回值是確定的,即不再調(diào)用它自身:否則,這種遞歸就變成了無窮遞歸,類似于死循環(huán)。因此,在定義遞歸函數(shù)時有一條最重要的規(guī)定:遞歸一定要向已知方向進(jìn)行。

      例如,如果把上面數(shù)學(xué)題改為如此。己知有一個數(shù)列:f(20)=1,f(21)=4,f(n+2)=2*f(n+1)+f(n),其中n是大于0的整數(shù),求f(10)的值。那么f(10)的函數(shù)體應(yīng)該改為如下形式:

      deffn(n):

      ifn==20:

      return1

      elifn==21:

      return4

      else:

      #函數(shù)中調(diào)用它自身,就是函數(shù)遞歸

      returnfn(n+2)-2*fn(n+1)

      從上面的fn()函數(shù)來看,當(dāng)程序要計(jì)算fn(10)的值時,fn(10)等于fn(12)-2*fn(11),而fn(11)等于fn(13)-2*fn(12)……依此類推,直到fn(19)等于fn(21)-2*fn(20),此時就可以得到fn(19)的值,然后依次反算到fn(10)的值。這就是遞歸的重要規(guī)則:對于求fn(10)而言,如果fn(0)和fn(1)是已知的,則應(yīng)該采用fn(n)=2*fn(n-1)+fn(n-2)的形式遞歸,因?yàn)樾〉囊欢艘阎?如果fn(20)和fn(21)是已知的,則應(yīng)該采用fn(n)=fn(n+2)-2*fn(n+1)的形式遞歸,因?yàn)榇蟮囊欢艘阎?/p>

      遞歸是非常有用的,例如程序希望遍歷某個路徑下的所有文件,但這個路徑下的文件夾的深度是未知的,那么就可以使用遞歸來實(shí)現(xiàn)這個需求。系統(tǒng)可定義一個函數(shù),該函數(shù)接收一個文件路徑作為參數(shù),該函數(shù)可遍歷出當(dāng)前路徑下的所有文件和文件路徑,即在該函數(shù)的函數(shù)體中再次調(diào)用函數(shù)自身來處理該路徑下的所有文件路徑。

      總之,只要在一個函數(shù)的函數(shù)體中調(diào)用了函數(shù)自身,就是函數(shù)遞歸。遞歸一定要向已知方向進(jìn)行。

      以上內(nèi)容為大家介紹了Python培訓(xùn)之函數(shù)遞歸,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

      聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
      10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
      請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
      免費(fèi)領(lǐng)取
      今日已有369人領(lǐng)取成功
      劉同學(xué) 138****2860 剛剛成功領(lǐng)取
      王同學(xué) 131****2015 剛剛成功領(lǐng)取
      張同學(xué) 133****4652 剛剛成功領(lǐng)取
      李同學(xué) 135****8607 剛剛成功領(lǐng)取
      楊同學(xué) 132****5667 剛剛成功領(lǐng)取
      岳同學(xué) 134****6652 剛剛成功領(lǐng)取
      梁同學(xué) 157****2950 剛剛成功領(lǐng)取
      劉同學(xué) 189****1015 剛剛成功領(lǐng)取
      張同學(xué) 155****4678 剛剛成功領(lǐng)取
      鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
      董同學(xué) 138****2867 剛剛成功領(lǐng)取
      周同學(xué) 136****3602 剛剛成功領(lǐng)取
      相關(guān)推薦HOT