1 //64个盘子
2 //划分成小问题:1.将上面的63个盘子从x借助z移动到y上
3 2.将第64个盘子从x移动到z上
4 3.将y上的63个盘子借助x移动到z上
5 详解:https://www.bilibili.com/video/av81085437
6 #include<stdio.h>
7
8 void move(int n, char x, char y, char z)
9 {
10 if(n == 1)
11 {
12 printf("%c-->%c\n",x,z);
13 }
14 else
15 {
16 move(n-1,x,z,y); //将n-1个盘子从x借助z移动到y
17 printf("%c-->%c\n",x,z);//将第n个盘子从x移动到z上
18 move(n-1,y,x,z); // 将n-1个盘子从y借助x移动在z上
19 }
20 }
21
22 int main(void)
23 {
24 int n;
25 char x,y,z;
26 printf("请输入汉诺塔的层数:");
27 scanf("%d",&n);
28 printf("移动的步骤如下:\n");
29 move(n,'x','y','z');
30 return 0;
31 }