本篇文章為大家展示了Python中怎么利用遞歸算法實(shí)現(xiàn)漢諾塔,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

1. 找出Fibonacci數(shù)列中,下標(biāo)為 n 的數(shù)(下標(biāo)從0計(jì)數(shù))
Fibonacci數(shù)列的形式是這樣的:0,1,1,2,3,5,8,13……
① 使用while循環(huán),python2代碼如下:
def fib(n): a,b=0,1 count=0 while count<n: a,b=b,a+b count=count+1 print a
運(yùn)行結(jié)果如下:
>>> fib(0)
0
>>> fib(1)
1
>>> fib(2)
1
>>> fib(3)
2
>>> fib(4)
3
>>> fib(5)
5
② 使用遞歸(遞歸必須要有邊界條件),python2代碼如下:
def fib(n): if n==0 or n==1:#遞歸的邊界條件 return n else: return fib(n-1)+fib(n-2)
運(yùn)行結(jié)果如下:
>>> fib(0)
0
>>> fib(1)
1
>>> fib(2)
1
>>> fib(3)
2
>>> fib(4)
3
>>> fib(5)
5
遞歸是最能表現(xiàn)計(jì)算思維的算法之一,我們以f(4)為例,看一下遞歸的執(zhí)行過程:

同一程序,使用遞歸雖然程序簡(jiǎn)潔,但遞歸的執(zhí)行效率要比循環(huán)低,系統(tǒng)的資源消耗比循環(huán)大。因?yàn)檫f歸是一層一層地往里面調(diào)用,結(jié)束后又一層一層地返回,所以遞歸的執(zhí)行效率并不高。那為什么還要使用遞歸呢?因?yàn)橛幸恍﹩栴},我們找不到非常明顯的循環(huán)方案,但容易找到明顯的遞歸方案。比如說著名的漢諾塔問題。
2. 漢諾塔
下圖是一個(gè)簡(jiǎn)化版的漢諾塔游戲,只有4個(gè)盤子:

漢諾塔游戲規(guī)則如下:

python2代碼如下:
def hanoi(a,b,c,n): if n==1:#遞歸結(jié)束條件 print a,'->',c else: hanoi(a,c,b,n-1) print a,'->',c hanoi(b,a,c,n-1)
運(yùn)行結(jié)果:
>>> hanoi('A','B','C',1)
A -> C
>>> hanoi('A','B','C',2)
A -> B
A -> C
B -> C
>>> hanoi('A','B','C',3)
A -> C
A -> B
C -> B
A -> C
B -> A
B -> C
A -> C
上述內(nèi)容就是Python中怎么利用遞歸算法實(shí)現(xiàn)漢諾塔,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享題目:Python中怎么利用遞歸算法實(shí)現(xiàn)漢諾塔-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://chinadenli.net/article16/gsidg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、手機(jī)網(wǎng)站建設(shè)、ChatGPT、網(wǎng)站內(nèi)鏈、小程序開發(fā)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容