汉诺塔—递归、分治
思路:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }