遞歸和迭代從本質(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ì)算,大大地減少了程序的代碼量
注意 :
-
遞歸就是在過(guò)程或函數(shù)里面調(diào)用自身;
-
在使用遞歸時(shí),必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口
執(zhí)行階段: 分解 + 回溯
-
遞推 :把復(fù)雜的問(wèn)題的求解推到比原問(wèn)題簡(jiǎn)單一些的問(wèn)題的求解;
-
回溯 :當(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ì)您有幫助就好】元

