Python打卡第九天

汉诺塔:

有三根顶针,在第一根顶针上放着若干个盘子,且小盘子在大盘子上面,现把这些盘子从第一根顶针上移动到第三根顶针上,且小盘子依旧在大盘子之上。在移动的过程中可以借助第二根顶针,每次只能移动一个盘子,且小盘子要在大盘子上面,如何移动才能使所有盘子从第一根顶针到第三根顶针上。

分析:

采用迭代的方法,第64个可以考虑第63个如何实现,第63个可以考虑62个如何实现……如此反复,最后递归至一个如何实现。因此可以将前n-1个放在中转柱上,将剩下的一个放到目标柱子上

代码:

def hanoni(n, a, b, c):
    if n == 1:
        print(a, "->", c)
        return
    hanoni(n - 1, a, c, b)
    hanoni(1, a, b, c)
    hanoni(n - 1, b, a, c)


level = int(input("请输入汉诺塔层数:"))
hanoni(level, 'a', 'b', 'c')
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页