欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

重学数据结构与算法——汉诺塔

程序员文章站 2024-03-16 15:38:34
...
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')

递归总体来说,要看整体,不能揪住细节不放,也就是说要按照不失一般性的思路来考虑。汉诺塔可以总结出3个步骤,(1)a的最上层从c到b;(2)a的最上层到c;(3)b的最上层到c。
递归问题可以总结出递归公式,这个递归公式在每一步都适用,这就是为什么要看整体,而不看具体每一步怎么做。我之前会一步一步的演示,生怕某一步走错了。
注意递归问题是从外到里还是从里到外(画个图就看出来了)
注意:递归需要有结束条件

上一篇: 判断位置是否会发生碰撞

下一篇: