有3根柱子,A、B、C。设n是一个大于0的整数,在柱子A上套着n个大小均不相同的盘子。n个盘子已经按从小到大顺序排好。
要求:1)每次只能移动一个盘,而且只能从一根柱子的最上面移动到另一根柱子的最上面。
2)大盘不许放置在小盘的下面。
3)除了这三个柱子,不允许将盘放置在别处。
4)要求将n个盘子从柱子A移动到柱子B。
实现代码如下:
void gb_solveHanoi(int discNumber, char start, char temp, char end)
{
if (discNumber <= 1)
{
printf("将1号盘子从柱子%c移动到柱子%c。\n", start, end);
}
else
{
gb_solveHanoi(discNumber - 1, start, end, temp);
printf("将%d号盘子从柱子%c移动到柱子%c。\n", discNumber, start, end);
gb_solveHanoi(discNumber - 1, temp, start, end);
}
}
int main()
{
int discNumber;
printf("请输入盘子的总数:>");
scanf("%d", &discNumber);
gb_solveHanoi(discNumber, 'A', 'B', 'C');
return 0;
}
下面是计算3个盘子的步骤: