//如果不用递归的话那就用循环 在主函数里及逆行循环难道占用的不是站的空间吗
//那栈难道不会有爆掉的风险吗
#include<stdio.h>
void hanio(int n, char x, char y, char z);void move(int t, char x, char y);//传入柱子 和盘子 进行移动 抽象出最简单的步骤
int main()
{
int n;
printf("请输入层数\n");
scanf("%d", &n);
char x='A';
char y='B';
char z='C';
hanio( n,x,y,z);
return 0;
}
void hanio(int n, char x, char y, char z)//将n层盘子从x移动到z
{
int t = 1;
if (n == 1)
{//移动是一种功能 要将其变成一种函数不要直接粗暴的上去就写
move(t, x, z);
}
else
{
hanio(n - 1, x, z, y);//将n-1层从x搬到y
move(n, x, z); //将n盘子从x搬到z
hanio(n - 1, y, x, z);//将n-1层从y搬到z x是辅助塔
}
}
void move(int t, char x, char y)
{
printf("将 %d 从 %c 搬到 %c\n", t, x, y);//搬动盘子
}