void move(char x,char y)
{
int i;
if(x=='A'&&y=='B') i=1;
else
{
if(x=='A'&&y=='C') i=2;
else
{
if(x=='B'&&y=='C') i=3;
else
{
if(x=='B'&&y=='A') i=4;
else
{
if(x=='C'&&y=='A') i=5;
else
{
if(x=='C'&&y=='B') i=6;
}
}
}
}
}
printf("%d",i);
}
void hanoi(int n, char one, char two, thar three)
{
if (n==1)move(one,three);
else
{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
main()
{
int m;
printf("/ninput the number of diskes:");
scanf("%d",&m);
printf("The step to moving %3d disks:/n",m);
hanoi(m,'A','B','C');
}
前5个输出的结果如下图所示:
2
123
2162432
123156123453123
2162432165462162432465432162432
2
123
2162432
123156123453123
2162432165462162432465432162432
123156123453123156153456123156123453123456153453123156123453123