漢諾塔的移動可以用遞歸函數非常簡單地實現。
題目: 請編寫
move(n, a, b, c)
函數,它接收參數n
,表示3個柱子A、B、C中第1個柱子A的盤子數量,然后打印出把所有盤子從A借助B移動到C的方法
[思路]
假設:A柱子只有兩個盤,上面為n-1個小盤,下面為1個大盤;B:0盤;C:0盤
移動步驟①:A柱的n-1個盤,借助C柱的緩沖,移動到B柱,move(n-1,a,c,b)
移動步驟②:A柱的1個盤,借助B柱的緩沖,移動到C柱,move(1,a,b,c)
移動步驟③:B柱的n-1個盤,借助A柱的緩沖,移動到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
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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