c++ - 有哪些合理的方法可以改进递归问题的解决?

标签 c++ algorithm recursion

我喜欢在 TopCoder 网站上解决算法问题。我可以实现大部分基本的递归问题,例如回溯、dfs……但是,每当我遇到复杂的递归时,我常常要花上好几个小时。当我检查其他程序员的解决方案时,我为自己感到羞耻。我已经编程了将近 5 年。我可以看到其他编程技术的显着改进,例如操作字符串、图形、GUI ......但不是递归?谁能分享一些如何处理递归问题的经验?谢谢!

更新

我熟悉单元测试方法。甚至在我知道 Unit Test 之前,我就经常写一些小的测试函数来看看结果是否是我想要的。当面临递归问题时,我自然失去了这种能力。我可以插入几个“cout”语句来查看当前结果,但是当调用嵌套很深时,我不再可以跟踪它。所以大多数时候,要么我先用铅笔和纸解决它,要么我就完成了(不能使用常规方法,比如把它分成小块)。我觉得递归必须作为一个整体工作。

最好的问候,

最佳答案

我发现铅笔和纸真的很方便。将问题分解成更小的 block 也是一个好主意,例如使用非常小的数据集。您应该做的第一件事是确定您的基本条件,即标记递归调用结束的条件。从那里您可以处理递归问题的主体并使用更大的数据集对其进行测试/验证。

我还想补充一点,速度并不是成为一名优秀工程师的唯一条件。工程师还可以拥有许多其他技能,包括跳出框框思考和思考、说服他人采取特定行动、分解问题并向外行(利益相关者和客户)解释的能力等等。更多。

关于c++ - 有哪些合理的方法可以改进递归问题的解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4582005/

相关文章:

algorithm - 算法的最坏情况和平均情况运行时间之间的关系

algorithm - 用于半稀疏数组中最近邻计算的 Numpy 矢量化

c++ - C++中指向函数的指针

algorithm - 如何开发拼写检查器和建议器

C++:关于内存管理,指针本身是如何处理的?

c# - 如何提高我的 ECMAScript 实现的递归能力?

recursion - 递归减法不起作用

Java递归洪水填充算法的问题

c++ - Opengl 中的视差法线贴图问题,GLSL

c++ 数独网格初始化