博客地址:https://ziyue.tech
汉诺塔源于印度古老传说。其中规则如下:已知有三根柱子,其中一根柱子从上到下依次排列着N个圆盘,然后把该柱子上的圆盘,从下面开始按大小顺序重新摆放在另一根柱子上。同时,小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
运用递归的思想去解决问题,首先我们先定义四个函数变量:圆盘数量N、起始柱、目标柱、中间柱。
第一步:当N=1时,需要一步,从起始柱到目标柱,即从A->C。
第二步:当N大于1时,首先将A上的N-1个圆盘移动到B上,把A上最后一个圆盘移动到C上,此时A是起始柱、B是目标柱、C是中间柱。
计数+1
第三步:将B上的N-1个圆盘移动到C上,递归关系建立完成,此时B是起始柱 、C是目标柱、A是中间柱。
2021年5月16日,中国龙岩的陈诺以29.328秒的成绩打破了6层汉诺塔吉尼斯世界纪录。
下面是在Python中建立递归函数求解6层汉诺塔问题,得出圆盘移动过程及移动的次数。
count = 0
def hanoi(n, src, dst, m