python實現遞迴詳解 例項

2021-10-08 11:07:28 字數 3639 閱讀 3308

首先遞迴是一種解決問題的方法,其精髓在於將問題分解為規模更小的相同問題。我們將問題持續分解,知道問題規模小到可以用非常簡單直接的方式來解決。遞迴的問題分解方式十分獨特,其演算法方面的明顯特徵就是:在演算法流程中呼叫自身

a、遞迴演算法必須有乙個基本結束條件(即最小規模問題的直接解決)

b、遞迴演算法必須能改變狀態(向基本結束條件演講即見效問題規模)

c、遞迴演算法必須呼叫自身(解決見笑了規模的相同問題)

----列表求和問題

def

sum(mylist):if

len(mylist)==1

:#遞迴結束條件,如果數列最後只剩下乙個數就返回這個列表的第乙個數(也就是這個數)

return mylist[0]

else

:return mylist[0]

+sum(mylist[1:

])#將列表求和問題轉化為第乙個數和剩下數的和的問題,從而不斷呼叫自身實現遞迴求和

if __name__ ==

'__main__'

:print

(sum([1

,3,5

,7,9]))

----整數轉換為任意進製問題

上圖為轉換過程。比如我們將整數轉化為十進位制數(**可以實現整數轉化為任意進製,這裡只是舉例)我們將需要轉換的整數不斷地整除10並且每次保留整數和10的餘數,直到最後數字小於十,符合遞迴結束的條件。當然我們這裡還要認為的建立乙個字串用來保留。具體**如下

def

zhuanhuan

(num,base)

: mystring=

"0123456789abcdef"

if num

return mystring[num]

else

:return zhuanhuan(num//base,base)

+mystring[num%base]

if __name__ ==

'__main__'

:print

(zhuanhuan(

100,16)

)

----利用遞迴畫樹葉

import turtle

deftree

(len):

iflen

>5:

#遞迴結束條件,樹幹太短就不畫

turtle.forward(

len)

#畫樹幹

turtle.right(20)

#右轉20度

tree(

len-15)

#遞迴呼叫畫右邊的小樹,樹幹-15

turtle.left(40)

#向左回40度,即向左傾斜20度

tree(

len-15)

#遞迴呼叫,花左邊的小樹,樹幹-15

turtle.right(20)

#回正 turtle.backward(

len)

#海龜退回原位

if __name__ ==

'__main__'

: turtle.left(90)

turtle.penup(

) turtle.backward(

300)

turtle.pendown(

) turtle.pensize(2)

turtle.pencolor(

"green"

) tree(

125)

turtle.hideturtle(

) turtle.done(

)

效果如上所示

----謝爾賓斯三角形的遞迴應用

–漢諾塔問題

def

han_nuo_ta_1

(height,frompole,withpole,topole)

:if height>=1:

han_nuo_ta_1(height-

1,frompole,withpole,topole)

han_nuo_ta_2(height,frompole,topole)

han_nuo_ta_1(height-

1,withpole,frompole,topole)

defhan_nuo_ta_2

(disk,frompole,topole)

:print

("moving disk[{}] from {} to {}"

.format

(disk,frompole,topole)

)if __name__ ==

'__main__'

: han_nuo_ta_1(10,

"#1"

,"#2"

,"#3"

)

思路:首先將上層n-1個碟片的碟片塔,從開始柱,經由目標柱,移動到中間柱;然後將第n個(最大的碟片)從開始柱,移動到目標柱;最後將放置在中間柱的n-1個碟片的碟片塔,由開始柱,移動到目標柱

遞迴例項詳解

c通過執行時堆疊支援遞迴函式的實現。遞迴函式就是直接或間接呼叫自身的函式。許多教科書都把計算機階乘和菲波那契數列用來說明遞迴,非常不幸我們可愛的著名的老潭老師的 c語言程式設計 一書中就是從階乘的計算開始的函式遞迴。導致讀過這本經書的同學們,看到階乘計算第乙個想法就是遞迴。但是在階乘的計算裡,遞迴並...

python遞迴函式例項 python遞迴函式

python遞迴函式 什麼是遞迴?遞迴,就是在函式執行中自己呼叫自己 示例 def recursion n 定義遞迴函式 print n 列印n recursion n 1 在函式的執行種呼叫遞迴 recursion 1 呼叫函式 這個函式在不斷的自己呼叫自己,每次呼叫n 1,看下執行結果 998t...

python遞迴實現 遞迴演算法 python實現

在函式的定義中對這個函式自身的呼叫,就是遞迴。遞迴結構中,遞迴的部分必須比原來的整體簡單,才有可能到達某種終結點 出口 而且必須存在非遞迴的基本結構構成的部分,否則會無限遞迴。學習目標 程式設計實現斐波那契數列求值 f n f n 1 f n 2 程式設計實現求階乘 n 程式設計實現一組資料集合的全...