#include <stdio.h>
/*
盘子按照从小到大顺序从高到低摆放 n-1 摆放在 n 的上面
*/
void Move(char, int, char);
void Hanoi(int, char, char, char);
int main(){
Hanoi(3, 'x', 'y', 'z');
return 0;
}
void Move(char c1, int i, char c2){
printf("Move Disk %d from %c to %c\n", i, c1, c2);
}
void Hanoi(int d, char x, char y , char z){
if(d == 1) Move(x, d, z);
else{
Hanoi(d-1, x, z, y); //从x把第d-1个盘子借助z移动到y
Move(x, d, z); //从x移动第d个盘子到z
Hanoi(d-1, y, x, z); //从y把第d个盘子借助x移动到z
}
}
输出如下:
Move Disk 1 from x to z
Move Disk 2 from x to y
Move Disk 1 from z to y
Move Disk 3 from x to z
Move Disk 1 from y to x
Move Disk 2 from y to z
Move Disk 1 from x to z