题目:请编写move(n, a, b, c)
函数,它接收参数n
,表示3个柱子A、B、C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法
在看到廖雪峰老师python-递归函数教程下面一个大佬的解释后,觉得非常适合我这种小白,故在此记录
- 首先关于汉诺塔:
有三根杆子A,B,C。A杆上有 N 个 (N>1) 穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至 C 杆:
- 每次只能移动一个圆盘;
- 大盘不能叠在小盘上面
如图,N=3
- 其次附上大佬代码:
# -*- coding: utf-8 -*-
def hanoi(n, a, b, c):
# 当n为1时 (递归基础)
if n == 1:
print(a, '-->', c) # 将A柱最底层的圆盘移动到C柱
# 当n大于1时
else:
hanoi(n-1, a, c, b) # 借助C柱,将n-1个圆盘从A柱移动到B柱
print(a, '-->', c) # 将A柱最底层的圆盘移动到C柱
hanoi(n-1, b, a, c) # 借助A柱,将n