# 河內塔
```cpp=
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int Hanoi(int , int , int , int);
int main(){
int n;
cout<<"河內塔解法,輸入盤子數量"<<endl;
cin>>n;
cout<<"共"<<fixed<<setprecision(0)<<pow(2,n)-1<<"步"<<endl;
Hanoi(n , 1 , 2 ,3);
return 0;
}
int Hanoi(int n , int p1 , int p2 , int p3){
if(n==1){
cout<<p1<<"移到"<<p3<<endl;
}
else{
Hanoi(n-1 , p1 , p3 , p2);
cout<<p1<<"移到"<<p3<<endl;
Hanoi(n-1 , p2 , p1 , p3);
}
}
```
執行
```
河內塔解法,輸入盤子數量3
共7步
1移到3
1移到2
3移到2
1移到3
2移到1
2移到3
1移到3
```