递归
#include<iostream>
using namespace std;
class Hanoi
{
public:
Hanoi(int i):totalDisks(i){};
void solve();
private:
int totalDisks;
void moveOne(int diskID,int from,int to);
void move(int diskNums,int from,int tmp,int to);
};
void Hanoi::solve()
{
move(totalDisks,1,2,3);
}
void Hanoi::moveOne(int diskID,int from,int to)
{
cout<<"Move Disk No."<<diskID<<" from "<<from<<" to "<<to<<endl;
}
void Hanoi::move(int diskNums,int from,int tmp,int to)
{
if(diskNums==1)
{
moveOne(1,from,to);
}
else
{
move(diskNums-1,from,to,tmp);
moveOne(diskNums,from,to);
move(diskNums-1,tmp,from,to);
}
}
int main()
{
Hanoi ht(3);
ht.solve();
return 0;
}