遞歸和迭代從本質上看都是循環的一種,遞歸通過在循環中調用自身,而迭代則通過某段代碼實現循環
一般來說:迭代的思想會使問題簡單化,但計算過程會十分繁瑣,因為參數要通過傳遞的形式先到達遞歸條件值,然后再一層一層返回,會占用大量內存,只適用于小型的問題求解。
一、 遞歸:
它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量
注意 :
-
遞歸就是在過程或函數里面調用自身;
-
在使用遞歸時,必須有一個明確的遞歸結束條件,稱為遞歸出口
執行階段: 分解 + 回溯
-
遞推 :把復雜的問題的求解推到比原問題簡單一些的問題的求解;
-
回溯 :當獲得最簡單的情況(遞歸出口)后,逐步返回,依次得到復雜的解.
用遞歸可以解決很多問題:如背包問題,漢諾塔問題,斐波那契數列為:1,1,2,3,5…
通過下面兩個例子來看一下執行過程
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
)
**
**
*
**
**
**
*
**
*
二、迭代
迭代與普通循環的區別是:循環代碼中參與運算的變量同時是保存結果的變量,當前保存的結果作為下一次循環計算的初始值。
常見的for循環遍歷對象就是迭代。
demo3
for
i
in
range
(
1
,
6
)
:
print
(
"*"
*
i
)
*
**
**
*
**
**
**
**
*
demo4
for
i
in
range
(
1
,
6
)
:
print
(
"*"
*
(
6
-
i
)
)
**
**
*
**
**
**
*
**
*
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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