---
# System prepended metadata

title: 河內塔

---

# 河內塔
```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
```