递归的两个特点
- 调用自身
- 结束条件
汉诺塔问题
有从大到小往上摞的n个盘子在A上,还有另外两个柱子B、C,要把n个盘子从A上原封不动移动到C上,每次只能移动一个盘子,而且大盘子不能在小盘子上面。
n个盘子时:
- 把上面的n-1个盘子从A经过C移动到B
- 把最下面的第n个盘子从A移动到C
- 把n-1个盘子从B经过A移动到C
代码:
def hanoi(n, a, b, c):
if n>0:
hanoi(n-1, a, c, b)
print('moving from %s to %s' % (a, c))
hanoi(n-1, b, a, c)
hanoi(3, 'A', 'B', 'C')