经典问题之汉诺塔(递归)

二话不说,直接上代码,注释全有

#include
#include
#include 
using namespace std;
void hannuota(int n,char str,char mid,char dest)
{//将str上的n个盘子,以mid为中转,移动到dest上 
 if(n == 1)
 {//只需移动一个盘子 
  cout << str << "->" << dest << endl;
  //直接将盘子从str移动到dest上 
  return ;//递归中止 
 }
 hannuota(n-1,str,dest,mid);//先将n-1个盘子从str移动到mid上 
 cout << str << "->" << dest << endl;
 //再将一个盘子从str移到dest 
 hannuota(n-1,mid,str,dest);//最后将n-1个盘子从mid移动到dest 
 return ;
}
int main()
{
 int n;
 cin >> n;
 hannuota(n,'A','B','C');
 return 0;
}

你可能感兴趣的:(经典问题之汉诺塔(递归))