理解汉诺塔递归

三个盘子的汉诺塔你总会吧:

然后你移完发现左边柱子下面又蹦出来一个盘子

好吧, 那就把中间的柱子看成目标柱

然后把最大的移到右边, 然后就和搬三个一模一样了

更多的话也是一样的...

把a上面n-1个盘子看做一个整体,这样a上面就剩下两个盘子了,(n,n-1)

  1. 把n-1个整体借助于c先移动到c
  2. 把第n个移动到c
  3. 把b上面的n-1个盘子借助于a移动到c

Java代码就是

public static void hanoi(int n, char a, char b, char c) {
    if (n == 1) {
        //如果只剩下一个盘子,直接从a移动到c
        System.out.println("Move " + n + " from " + a + " to " + c);
    } else {
        //把n-1个盘子从a移动到b借助于c
        hanoi(n - 1, a, c, b);
        //把第n个盘子从a移动到c
        System.out.println("Move " + n + " from " + a + " to " + c);
        //把n-1个盘子从b移动到c借助于a
        hanoi(n - 1, b, a, c);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本篇文章是基于谷歌有关Graphic的一篇概览文章的翻译:http://source.android.com/de...
    lee_3do阅读 7,196评论 2 21
  • 我不是在介绍那部电影, 我说的是“树”, 树皮,生命流淌的印记,相比年轮更像是生命的具象化, 像条河
    MartinGB阅读 455评论 0 1
  • 有时候,生命是很坚强的,源于一种精神;有时候,生命又是很脆弱的,也是源于一种精神。但是,生命谁也不可预测,即便是自...
    妤梦人生阅读 254评论 1 9
  • 这是一篇关于一个可爱的小男孩的故事。如果不是他发生了车祸骤然离世,我也许不会记起他的点点滴滴,更不会为了他写...
    阿丶C阅读 272评论 0 1
  • PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。 PHP 过滤器: PHP过滤器用于验证和过滤来...
    廖马儿阅读 1,147评论 0 0