美文网首页
理解汉诺塔递归

理解汉诺塔递归

作者: adXiang | 来源:发表于2018-01-04 13:53 被阅读69次

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

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

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

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

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

把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);
    }
}

相关文章

  • 理解汉诺塔递归

    三个盘子的汉诺塔你总会吧: 然后你移完发现左边柱子下面又蹦出来一个盘子 好吧, 那就把中间的柱子看成目标柱 然后把...

  • 汉诺塔理解递归

    对递归的理解一直是展开的方式,拿参数带进去试,但是这种方法实在令我苦恼不已,看知乎上的回答恍然大悟: 汉诺塔可以很...

  • 汉诺塔递归

    学习汉诺塔递归算法

  • python例子

    利用递归函数移动汉诺塔

  • 2019-11-28汉诺塔算法-递归实现

    使用递归的方式实现汉诺塔

  • Tower of Hanoi的理解

    汉诺塔之前一直是知道过程,理解不了代码。直到今天在知乎上看到一种理解方式,一下子就懂了。如何理解汉诺塔的递归? -...

  • 数据结构与算法-递归分治-汉诺塔思想

    折半查找算法的递归实现 思想:减少查找序列的长度,分而治之地进行关键字的查找 汉诺塔问题 汉诺塔是我们递归思想,分...

  • 数据结构算法之递归和栈结构

    递归 程序调用自身的编程技巧称为递归简单案例:n的阶乘 汉诺塔 汉诺塔问题描述:3个柱为a、b、c,圆盘最初在a柱...

  • Python3 趣味系列题4 ------非递归解决

      人们通常利用递归的方法求解汉诺塔问题。递归程序的实现比较简单,但是难于理解。下面给出python3的递归程序:...

  • 汉诺塔

    利用递归函数移动汉诺塔: 打印移动过程

网友评论

      本文标题:理解汉诺塔递归

      本文链接:https://www.haomeiwen.com/subject/ehdrnxtx.html