汉诺塔—递归、分治

 

 

思路:

 

 

 

 

 1 #include <stdio.h> 
 2 //将n个盘子从x借助y移动到Z
 3 void move(int n,char x,char y,char z)
 4 {
 5     if(n==1)
 6         printf("%c-->%c\n", x, z);
 7     else
 8     {
 9         move(n - 1, x, z, y);       //将n-1个盘子从x借助z移动到y上
10         printf("%c-->%c\n", x, z);  //将第n个盘子从x借移动到z上
11         move(n - 1, y, x, z);       //将n-1个盘子从y借助x移动到z上
12     }
13 }
14 
15 int main()
16 {
17     int n;
18     printf("请输入汉诺塔的层数:");
19     scanf("%d", &n);
20     move(n,'X','Y','Z');
21 }
View Code

 

posted @ 2020-08-29 23:19  wind_y  阅读(131)  评论(0编辑  收藏  举报