设有 A、B、 C 共 3 根塔座, 在塔座 A 上堆叠 n个金盘, 每个盘大小不同, 只允许小盘在大盘之上,最底层的盘最大,如下图 所示。现在要求将 A 上的盘全都移到 C 上,在移的过程中要遵循以下原则:每次只能移动 一个盘;圆盘可以插在 A、B 和 C 任一个塔座上;在任何时刻,大盘不能放在小盘的上面。
python实现:
def hanoi(a,b,c,n):
if n==1:
print a,"->",c
else:
hanoi(a,c,b,n-1)
print a,"->",c
hanoi(b,a,c,n-1)
hanoi("a","b","c",5)
得到的结果:
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
================= RESTART: I:\python_DataStructure\汉诺塔.py =================
a -> c
a -> b
c -> b
a -> c
b -> a
b -> c
a -> c
a -> b
c -> b
c -> a
b -> a
c -> b
a -> c
a -> b
c -> b
a -> c
b -> a
b -> c
a -> c
b -> a
c -> b
c -> a
b -> a
b -> c
a -> c
a -> b
c -> b
a -> c
b -> a
b -> c
a -> c
>>>