黄色网页视频 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學(xué)習(xí)筆記——遞歸與迭代詳解

系統(tǒng) 1970 0

遞歸和迭代從本質(zhì)上看都是循環(huán)的一種,遞歸通過(guò)在循環(huán)中調(diào)用自身,而迭代則通過(guò)某段代碼實(shí)現(xiàn)循環(huán)
一般來(lái)說(shuō):迭代的思想會(huì)使問(wèn)題簡(jiǎn)單化,但計(jì)算過(guò)程會(huì)十分繁瑣,因?yàn)閰?shù)要通過(guò)傳遞的形式先到達(dá)遞歸條件值,然后再一層一層返回,會(huì)占用大量?jī)?nèi)存,只適用于小型的問(wèn)題求解。

一、 遞歸:


它通常把一個(gè)大型復(fù)雜的問(wèn)題層層轉(zhuǎn)化為一個(gè)與原問(wèn)題相似的規(guī)模較小的問(wèn)題來(lái)求解,遞歸策略只需少量的程序就可描述出解題過(guò)程所需要的多次重復(fù)計(jì)算,大大地減少了程序的代碼量

注意

  1. 遞歸就是在過(guò)程或函數(shù)里面調(diào)用自身;

  2. 在使用遞歸時(shí),必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口

執(zhí)行階段: 分解 + 回溯

  1. 遞推 :把復(fù)雜的問(wèn)題的求解推到比原問(wèn)題簡(jiǎn)單一些的問(wèn)題的求解;

  2. 回溯 :當(dāng)獲得最簡(jiǎn)單的情況(遞歸出口)后,逐步返回,依次得到復(fù)雜的解.

用遞歸可以解決很多問(wèn)題:如背包問(wèn)題,漢諾塔問(wèn)題,斐波那契數(shù)列為:1,1,2,3,5…
通過(guò)下面兩個(gè)例子來(lái)看一下執(zhí)行過(guò)程

demo1

            
              
                def
              
              
                digun
              
              
                (
              
              n
              
                )
              
              
                :
              
              
                if
              
               n 
              
                ==
              
              
                0
              
              
                :
              
              
                print
              
              
                (
              
              
                ''
              
              
                )
              
              
                return
              
              
                else
              
              
                :
              
              
        digun
              
                (
              
              n
              
                -
              
              
                1
              
              
                )
              
              
                print
              
              
                (
              
              
                "*"
              
              
                *
              
              n
              
                )
              
              
       
digun
              
                (
              
              
                5
              
              
                )
              
            
          
            
              
                *
              
              
                **
              
              
                **
              
              
                *
              
              
                **
              
              
                **
              
              
                **
              
              
                **
              
              
                *
              
            
          

demo2

            
              
                def
              
              
                digun
              
              
                (
              
              n
              
                )
              
              
                :
              
              
                if
              
               n 
              
                ==
              
              
                0
              
              
                :
              
              
                print
              
              
                (
              
              
                ''
              
              
                )
              
              
                return
              
              
                else
              
              
                :
              
              
                print
              
              
                (
              
              
                "*"
              
              
                *
              
              n
              
                )
              
              
         digun
              
                (
              
              n
              
                -
              
              
                1
              
              
                )
              
                     
digun
              
                (
              
              
                5
              
              
                )
              
            
          
            
              
                **
              
              
                **
              
              
                *
              
              
                **
              
              
                **
              
              
                **
              
              
                *
              
              
                **
              
              
                *
              
            
          

二、迭代


迭代與普通循環(huán)的區(qū)別是:循環(huán)代碼中參與運(yùn)算的變量同時(shí)是保存結(jié)果的變量,當(dāng)前保存的結(jié)果作為下一次循環(huán)計(jì)算的初始值。
常見的for循環(huán)遍歷對(duì)象就是迭代。

demo3

            
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                1
              
              
                ,
              
              
                6
              
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                "*"
              
              
                *
              
              i
              
                )
              
            
          
            
              
                *
              
              
                **
              
              
                **
              
              
                *
              
              
                **
              
              
                **
              
              
                **
              
              
                **
              
              
                *
              
            
          

demo4

            
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                1
              
              
                ,
              
              
                6
              
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                "*"
              
              
                *
              
              
                (
              
              
                6
              
              
                -
              
              i
              
                )
              
              
                )
              
            
          
            
              
                **
              
              
                **
              
              
                *
              
              
                **
              
              
                **
              
              
                **
              
              
                *
              
              
                **
              
              
                *
              
            
          

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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

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