【汉诺塔游戏-C语言函数递归实现实现】

x y z 三根柱子
若x上只有一个盘a,则直接将盘a从x移到z,x->z。
【汉诺塔游戏-C语言函数递归实现实现】_第1张图片

若x上只有两个盘a,b,现将a盘移到y,然后将b盘移到z,再将a盘从y移到z,a:1 x->y,b:2 x->z,a:3 y->z。
【汉诺塔游戏-C语言函数递归实现实现】_第2张图片
若x上只有三个盘a,b,c:
【汉诺塔游戏-C语言函数递归实现实现】_第3张图片
总结规律:
当有n个盘时可将n个盘看成1和n-1两个盘,先借助目标柱子柱子(z)将n-1个盘移到第三根柱子(第一次是y)上,然后将1从原柱子(第一次是x)转移到目标柱子(z)上,然后将在第三根柱子(y)上的n-1又分成1和n-2,又进行相同的操作,直到所有的圆盘都放在了z柱上。

代码:
#include
void move(char pos1,char pos2)
{
printf(" %c->%c ", pos1, pos2);
}

void hanoi(int n, char pos1, char pos2, char pos3)
{
if (n == 1)
{
move(pos1, pos3);
}
else
{
hanoi(n - 1, pos1, pos3, pos2);
move(pos1, pos3);
hanoi(n - 1, pos2, pos1, pos3);
}
}
int main()
{
printf(“请输入盘子数\n”);
int n = 0;
scanf("%d", &n);
hanoi(n, ‘X’, ‘Y’, ‘Z’);

return 0;

}
【汉诺塔游戏-C语言函数递归实现实现】_第4张图片

你可能感兴趣的:(小游戏,c语言,c#,开发语言)