#include <iostream>
using namespace std;
int step=1;
void move(int n,char a,char b,char c){
if(n==1){
printf("move %d from %c to %c\n",step,a,c);//总目标:把a移到c
step++;
}else{//2个小目标
move(n-1,a,c,b);//1.a借助c移到b
printf("move %d from %c to %c\n",step,a,c);
step++;
move(n-1,b,a,c);//2.b借助a移到c
}
}
int main(){
int n;
cout<<"请输入盘数n=\n";
cin>>n;
cout<<"在三根柱子上移动"<<n<<"只盘的步骤为:"<<endl;
move(n,'a','b','c');
return 0;
}
n==1时,输出总目标。
else时,2个小目标: 1.a借助c移到b 2.b借助a移到c。中间夹着一个输出总目标。
总目标:总a移到c。