汉诺塔问题,如何使用c++输出每一步

img


网上有人说要使用递归,但具体如何使用呢,希望能够写一下这个代码

参考 :

#include<stdio.h>

void move(int n, char a, char c)    
{
    printf("%c->%c\n", a, c);
}

void hanoi(int n, char a, char b, char c)//移动n个盘子,从a借助b到c
{
    if (n == 1)
        move(1, a, c);        //只剩一个盘子的时候
    else
    {
        hanoi(n-1, a, c, b);//将前n-1个盘子借助目的塔移动到借用塔上
        move(n, a, c);        //将剩下的一个盘子移动到目的塔上
        hanoi(n-1, b, a, c);//最后将借用塔上的n-1个盘子移动到目的塔上
    }
}

int main()
{
    hanoi(3,'a','b','c');    //测试三层汉诺塔
    return 0;
}