0:n=int(n/2)print(n)輸出:5025126310如果用函數(shù),如何實現(xiàn)呢?defcalc(n):n=int(n/2)print(n)ifn>0:calc(n)#調(diào)用自己calc(100)在函數(shù)內(nèi)部,可以調(diào)用其他函數(shù)。如果一個函數(shù)在內(nèi)部調(diào)用自已本身,這個函數(shù)就叫做遞歸函數(shù)。上面我們寫的這個代碼就是遞歸。遞歸的執(zhí)行過程defcalc(" />

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Python函數(shù)編程——遞歸

系統(tǒng) 2113 0

Python函數(shù)編程——遞歸

求100不斷除以2直到商為0為止,打印每次除的商

用循環(huán)實現(xiàn):

          
            n = 100
while n > 0:
    n = int(n/2)
    print(n)
          
        

輸出:

          
            50
25
12
6
3
1
0
          
        

如果用函數(shù),如何實現(xiàn)呢?

          
            def calc(n):
    n = int(n/2)
    print(n)
    if n > 0:
        calc(n)    # 調(diào)用自己
calc(100)
          
        

在函數(shù)內(nèi)部,可以調(diào)用其他函數(shù)。如果一個函數(shù)在內(nèi)部調(diào)用自已本身,這個函數(shù)就叫做遞歸函數(shù)。上面我們寫的這個代碼就是遞歸。

遞歸的執(zhí)行過程

          
            def calc(n):
    n = int(n/2)
    print(n)
    if n > 0:
         calc(n)
    print(n) 
calc(10)
          
        

輸出:

          
            5

2

1

0

0

1

2

5
          
        

為什么輸出結(jié)果會是這樣?

Python函數(shù)編程——遞歸_第1張圖片

如上圖所示,函數(shù)在每進入下一層的時候,當前層的函數(shù)并未結(jié)束,它必須等它調(diào)用的下一層函數(shù)執(zhí)行結(jié)束返回后才能繼續(xù)往下走。 所以最下面的那句print(n)會等最里層的函數(shù)執(zhí)行時才會執(zhí)行,然后不斷往外退層,所以會出現(xiàn)0、1、2、5的效果。

遞歸特性:

1、必須有一個明確的結(jié)束條件。

2、每次進入更深一層遞歸時,問題規(guī)模相比上次遞歸都應(yīng)有所減少。

3、遞歸效率不高,遞歸層次過多會導(dǎo)致棧溢出(在計算機中,函數(shù)調(diào)用是通過棧(stack)這種數(shù)據(jù)結(jié)構(gòu)實現(xiàn)的,每當進入一個函數(shù)調(diào)用,棧就會加一層棧幀,每當函數(shù)返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以,遞歸調(diào)用的次數(shù)過多,會導(dǎo)致棧溢出)。

遞歸在特定場景下還是挺有用的,以后學的一些算法就得用到遞歸,比如堆排、快排等。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論