九连环模拟程序C++递归演示

九连环的递归玩法,在 C++里真是挺有意思的。如果你喜欢玩算法题,又刚好对古代智力玩具有点兴趣,这个模拟程序还挺值得一看。

九连环的模拟程序,就是用 C++写的一个用递归来解环问题的工具,嗯,是那种一环扣一环的玩法。程序基于Visual Studio 2005开发,虽然环境比较老,但代码结构还蛮清晰的。

整个玩法规则不复杂,就是每次只能动最外层的环,而且还得看相邻的环是不是在“就绪”状态。这种状态控制逻辑,其实适合用递归来搞。每解一个环,其实都涉及对前几个环的操作,所以越往后越有递归的味道。

在代码里,环的状态用数组结构体表示。主要的递归函数会判断当前状态,再递归子状态,直到找到最优解。逻辑不难,但一开始调试时最好多打些断点,不然容易懵。

哦对了,项目里有几个关键文件,比如NineNestedRing.sln(方案文件),NineNestedRing.ncb(项目数据库),还有关键的源代码NineNestedRing.cpp,主要的逻辑都在这。

想学递归的,这程序挺合适的;想练 C++调试的,也能用这练练手。如果你顺带对汉诺塔或者约瑟夫环感兴趣,下面这些相关文章也蛮有参考价值的:

如果你想了解递归到底怎么玩的,或者想自己实现一个类似的解谜逻辑,不妨下下来跑一跑。

rar 文件大小:253.82KB