5.3 python代码与函数复用:用递归函数求解汉诺塔问题

博客地址:https://ziyue.tech

汉诺塔源于印度古老传说。其中规则如下:已知有三根柱子,其中一根柱子从上到下依次排列着N个圆盘,然后把该柱子上的圆盘,从下面开始按大小顺序重新摆放在另一根柱子上。同时,小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

5.3 python代码与函数复用:用递归函数求解汉诺塔问题_第1张图片

运用递归的思想去解决问题,首先我们先定义四个函数变量:圆盘数量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

你可能感兴趣的:(Python123,python)