2019-12-22
//******************************
//* 程序名: 汉诺塔问题 *
//* 编制时间 2017/9/24 *
//* 编制人 小小书童 *
//******************************
#include <iostream>
using namespace std;
int step =1 ; //步数
void Move(int m , char A ,char B ,char C)
{
if(m==1)
{
cout<<"["<<step<<"] move 1 # from "<<A<< " to "<<C<<endl ;
step++ ;
}
else
{
Move(m-1,A,C,B) ; // 第一步 ,将A 移动到 C ,借助于 B
cout<<"["<<step<<"] move "<<m<<" # from "<<A<< " to "<<C<<endl ;
step++ ;
Move(m-1,B,A,C) ; //第二步 ,将 B移动到 A ,借助于C 递归调用 move(m-1)
}
}
int main()
{
int n ; //盘数
cout<<"请你输入盘数"<<endl ;
cin>>n ;
cout<<"在3根柱子上移动"<<n<<"个盘子步骤为:"<<endl ;
Move(n,'A','B','C') ;
return 0;
}