借助中间的那一根针:
将63个盘子由x-------y
将最底下的第64个盘子从x移到z
将y上的63个盘子移动到z上
问题一:将·x上的63个盘子借助z到y
问题二:将y上的63个盘子借助x到z
问题一(
将前62个盘子借助x移到z上
将最底下的第63盘子移到y上
将z上的62个盘子移到y上
)
问题二(
将62个盘子y---x
第63个盘子移动到z
将x上的62个盘子移动到y上
)
二叉树
#include <stdio.h>
void hanoi(int n, char x, char y, char z);
void hanoi(int n, char x, char y, char z)
{
if (n == 1)
{
printf("%c --> %c
", x, z);
}
else
{
hanoi(n-1, x, z, y);
printf("%c --> %c
", x, z);
hanoi(n-1, y, x, z);
}
}
int main(void)
{
int n;
printf("输入轮子的数量");
scanf("%d", &n);
hanoi(n, 'X', 'Y', 'Z');
return 0;
}