汉诺塔问题的递归解法,算是 C 语言学习里绕不开的一关。这个例子用的是经典的三柱子搬盘子模型,逻辑清晰,代码也挺短。尤其是函数hanoi(int n, char one, char two, char three)
,写得比较规整,适合练习递归思维。
代码里该注意的地方有两个:一个是终止条件写错了,if (i==1)
其实应该是if (n==1)
;还有就是字符打印格式稍微乱了点,自己改下printf
里的符号就行。整体逻辑没问题,运行结果能正确输出每一步移动过程。
你要是刚学递归
,这个例子值得照着打一遍;如果是做数据结构课设
,也能拿来当模块使用,顺带还能练下输入输出
。代码跑完后的输出对照着画个图,更容易理解怎么一步步搬的。
如果你对汉诺塔的递归过程还是不太懂,可以看看这篇《数据结构与算法》- 递归算法应用与实践,里面讲得挺清楚的,结合代码效果更好。
推荐你也顺手收藏这些资料:
- C 语言数据结构与算法学习资料,适合系统入门
- 数据结构算法设计题 100 题 C 语言解析合集,练手用刚刚好
- Python 语言中的数据结构与算法,换个语言试试也不错
如果你是用 C 语言写算法题的,可以考虑把这个函数封装进你自己的工具库里,平时做题直接调用也方便。