汉诺塔问题:64个盘子,3个基座A、B、C,编程打印处移动过程

思路:利用递归分三步走
1. 将n个盘子从a移到b,c作为辅助
2. 将第n个盘子从a移到b
3. 将c中的n-1个盘子移到b,a作为辅助

#include <iostream>
using namespace std;

//将n个盘子从a移到b,c作为辅助
void hanoi(int n, char a, char b, char c)
{
    if(n>0)
    {
        //将n-1个盘子从a移到c,b作为辅助
        hanoi(n-1,a,c,b);
        //将第n个盘子从a移到b
        cout<<"Move dish "<<n<<" from pile "<<a<<" to "<<b<<endl;
        //将c中的n-1个盘子移到b,a作为辅助
        hanoi(n-1,c,b,a);
    }
}
int main()
{
    hanoi(64,'A','B','C');
    cout<<endl;
    return 0;
}
    原文作者: 汉诺塔问题
    原文地址: https://blog.csdn.net/u011954296/article/details/51015847
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞