关于用递归实现的原理,请查看我之前的文章:
C语言与汉诺塔
C#与汉诺塔
以下为代码:
count = 0
def move(pile, src, tmp, dst):
global count
if pile == 1:
print(src,'-->', dst)
count += 1
else:
move(pile-1, src, dst, tmp)
move(1, src, tmp, dst)
move(pile-1, tmp, src, dst)
num = int(input('输入汉诺塔层数:'))
move(num, 'A', 'B', 'C')
print('一共移动了%d步' %count)
运行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/38530c98d4c64823a32825be820240c0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQ1ZFLeafoOaqrGk=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)