我做了个动画三个盘子的汉诺塔你总会吧: 然后你移完发现左边柱子下面又蹦出来一个盘子 好吧, 那就把中间的柱子看成目标柱 然后把最大的移到右边, 然后就和搬三个一模一样了更多的话也是一样的...所以 所以说一共就三步把 n-1 号盘子移动到缓冲区把1号从起点移到终点然后把缓冲区的n-1号盘子也移到终点所以写成py代码就是
def move(n,from,buffer,to):
    if n==1:
        print('Move',n,'from',from,'to',to)
    else:
        move(n-1,from,to,buffer)
        move(1,from,buffer,to)
        move(n-1,buffer,from,to)
  1. 要从a到b 那c就是缓冲 move(n-1,from,to,buffer)
  2. 要从a到c 那b就是缓冲 move(1,from,buffer,to)
  3. 要从b到c 那a就是缓冲 move(n-1,buffer,from,to)
毫无理解难度啊...C++那不一样的吗
using namespace std;
#include 
#include 

void move (int n, char from, char buffer, char to){
    if (n == 1) {
        cout << "Move" << n << " from " << from << " to " << to << endl;
    }
    else {
        move (n-1, from, to, buffer);
        move (1, from, buffer, to);
        move (n-1, buffer, from, to);
    }
}

//别打我, 我习惯不换行了, 反正现在有格式化工具......
//main()你自己写吧
Mathematica的话...我会直接Fold一个迭代器迭代器会自己去找合适的缓冲区...这就是 Frame - Stewart 算法 不过讲道理这么写挺欠揍的...谁?给我 pull 这种代码我直接打上去了2333 话说这个可视化我画了4个小时...
Get["https://raw.githubusercontent.com/GalAster/Deus/master/Packages/_\
_Raw/HanoiTower.wl", CharacterEncoding -> "UTF8"]
HanoiShow@HanoiMove[10, Pillar -> 5] // ListAnimate