移动的次数为2**n-1(这个n为盘子的个数)
#include <iostream>
using namespace std;
void move(int n,char x,char y)
{
cout<<"把"<<n<<"号从"<<x<<"挪动到"<<y<<endl;
}
void Hannoi(int n, char A,char B,char C){
if(n==1)
move(1,A,C);//剩最后一个盘子从A移到C
else{
Hannoi(n-1,A,C,B);
move(n,A,C);//n-1个盘子从A借助B移到C
Hannoi(n-1,B,A,C);
}
}
int val(int n){
int c;
if(n==1) c=1;
else c=2*val(n-1)+1;
return c;
}
int main(){
int n;
cout<<"请输入盘子数量 :"<<endl;
cin>>n;
Hannoi(n,'A','B','C');
cout<<endl;
cout<<"需要移动"<<val(n)<<"次"<<endl;
return 0;
}