汉诺塔


汉诺塔是计算机学教科书中常用的游戏,用来说明递归的魔力。该游戏有3个柱子和一组不同大小的圆盘,柱子从圆盘的中心穿过。游戏开始时,所有圆盘叠放在左侧第一个柱子上,如图 1 所示。

游戏的目标是将所有的圆盘从第一个柱子移动到第三个柱子,同时遵守以下规则:

1.除了被移动时,所有圆盘都必须放在柱子上。
2.一次只能移动一个圆盘。
3.圆盘不能放置在比它小的圆盘上面。

#include<bits/stdc++.h>
using namespace std;
//a表示a柱b表示b柱c表示c柱,n表示当前有多少个盘子
void haitan(char a,char b,char c,int n)
{
       if (n==1) //当只有一个盘子时,直接从a柱移到c柱
      {
            cout<<a<<"->"<<c<<endl;
      }
      else
      {
            haitan(a,c,b,n-1);//n-1个盘子从a柱通过c柱称到b柱
            cout<<a<<"->"<<c<<endl;//将最后一个盘子直接从a柱移到c柱
            haitan(b,a,c,n-1);//n-1个盘子从b柱通过a柱移到c柱
      }
}
int main()
{
      int n;
      cin>>n;
      haitan('A','B','C',n);
}

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM