代码(模拟过程)
void move(char x,char y){
printf("%c->%c\n",x,y);
}
void hanoi(int n,char a,char b,char c){
if(n==1)move(a,c);
else{
hanoi(n-1,a,c,b);//将n-1个圆盘从A移动到B
move(a,c);//将一个圆盘从A移动到C
hanoi(n-1,b,a,c);//将n-1个圆盘从B移动到C
}
}
int main(){
hanoi(3,'A','B','C');
}
代码(计算步数):
int hanoi(int n){
if(n==1)return 1;
return hanoi(n-1)+hanoi(n-1)+1;
}
int main(){
printf("%d",hanoi(5));
}