#include<iostream>
using namespace std;
void HowMove(int n,char x,char y,char z);//n规模的汉诺塔问题
void Move(char x,int n,char y);//把第n个圆盘从x转移到y上
void main()
{
char yORn;
do
{
int n=0;
cout<<"请输入汉诺塔圆盘个数:";
cin>>n;
HowMove(n,'x','y','z');
cout<<"若要继续请输入Y:";
cin>>yORn;
}
while('Y'==yORn);
}
void Move(char x,int n,char y)//把第n个圆盘从x转移到y上
{
char str[1000];
sprintf_s(str,1000,"把第%d个圆盘从%c移动到%c上",n,x,y);
cout<<str<<endl;
}
void HowMove(int n,char x,char y,char z)
{
if(1==n)
Move(x,n,z);
else
{
HowMove(n-1,x,z,y);
Move(x,n,z);
HowMove(n-1,y,x,z);
}
}
//运行结果如下: