您的位置:首页 > 编程语言

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

2016-03-30 15:59 519 查看
思路:利用递归分三步走

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: