漢諾塔的移動(dòng)可以用遞歸函數(shù)非常簡(jiǎn)單地實(shí)現(xiàn)。
題目: 請(qǐng)編寫
move(n, a, b, c)
函數(shù),它接收參數(shù)n
,表示3個(gè)柱子A、B、C中第1個(gè)柱子A的盤子數(shù)量,然后打印出把所有盤子從A借助B移動(dòng)到C的方法
[思路]
假設(shè):A柱子只有兩個(gè)盤,上面為n-1個(gè)小盤,下面為1個(gè)大盤;B:0盤;C:0盤
移動(dòng)步驟①:A柱的n-1個(gè)盤,借助C柱的緩沖,移動(dòng)到B柱,move(n-1,a,c,b)
移動(dòng)步驟②:A柱的1個(gè)盤,借助B柱的緩沖,移動(dòng)到C柱,move(1,a,b,c)
移動(dòng)步驟③:B柱的n-1個(gè)盤,借助A柱的緩沖,移動(dòng)到C柱,move(n-1,b,a,c)
[代碼]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import math
def move(n,a,b,c):
if n==1:
print(a,'-->',c)
else:
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
move(3, 'A', 'B', 'C')
[輸出]
A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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