/*
汉诺塔的例程,利用递归,将N个盘子从a借助b移动到c
运行时,a为原始柱子,b为空柱子,c为目标柱子
编号 1~n 对应的从盘子小到大
*/
#include<stdio.h>
void move(int n,char a,char b,char c);
int main()
{
char x = 'A';
char y = 'B';
char z = 'C'; //A B C三根柱子
int n;
printf("输入初始A柱子上的盘子数:\n");
scanf("%d",&n);
move(n,x,y,z);
return 0;
}
void move(int n,char a,char b,char c)
{
if(n == 1) //此时不需要借助b
{
printf("盘子%d从%c到%c\n",n,a,c);
}
else
{
move(n-1,a,c,b);//n-1从a借助c移到b
printf("盘子%d从%c到%c\n",n,a,c);//n从a移到c
move(n-1,b,a,c);//n-1从b借助a移到c
}
}
汉诺塔C语言实现
最新推荐文章于 2023-06-14 21:27:25 发布