汉诺塔问题的C语言实现
汉诺塔 - 解决思路 |
1.如果只有一个金片,则把该金片从源移动到目标棒,结束。
2.如果有n个金片,则把前n-1个金片移动到辅助的棒,然后把自己移动到目标棒,最后再把前n-1个移动到目标棒
//Tower of Hanoi 汉诺塔
#include <stdio.h>
void TOH(int n, char A, char B, char C)
{
if (n == 1)
{
printf("Movedisk %d from %c to %c \n",n,A,C);
return;
}
TOH(n-1, A, C, B);
printf("Movedisk %d from %c to %c \n",n,A,C);
TOH(n-1, B, A, C);
}
void main()
{
int m, n;
printf("请输入测试数据的次数");
scanf("%d", &m);
while (m != 0)
{
printf("请输入数字n以解决n阶汉诺塔问题:\n");
scanf("%d",&n);
TOH(n,'A','B','C');
m--;
if (m == 0)
{
return;
}
}
}
作者:涵曦(www.hanxi.cc)
出处:hanxi.cnblogs.com
GitHub:github.com/hanxi
Email:im.hanxi@gmail.com
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
《 Skynet 游戏服务器开发实战》
-
学习地址:
-
优惠推荐码:
2CZ2UA5u
-
可以先免费试学前 2 章内容