漢諾塔是計算機學教科書中常用的游戲,用來說明遞歸的魔力。該游戲有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);
}
