关于递归的定义以及参数问题?
来源:7-6 稍复杂的递归逻辑 Path Sum III
Pro养成记
2019-06-07
老师,我想请问一下,对于一个递归函数,我们应该如何选择参数? 是不是参数的选取对于函数的定义也会有影响?
写回答
1回答
-
是的!
递归的参数不是选出来的,是根据你的逻辑定义出来的。这一点在动态规划中尤其明显。
我不认为有通用的,统一的,参数定义的方式,如果是那样的话,写递归函数就太简单了,算法设计也就太简单了,大家掌握这个统一的方法就好了。事实上不是这样的,具体逻辑是根据不同的问题定义出来的,参数也是根据不同的逻辑定义出来的。快排是递归,归并排序是递归,斐波那契是递归,汉诺塔是递归,树的遍历是递归,他们的递归逻辑和参数设计师完全不同的。这恰恰是算法设计的难点。
我的建议是,将七八九三章完整的看下来,如果时间允许,每一章的练习题都仔细思考,实践一下,应该足够让你找到一定的“感觉”。如果还不够,Leetcode上Backtracking和Depth-first Search相关的问题都是递归问题。可以再多“见识”一些。
关键是发现问题本身的递归性质,一旦发现了递归性质,参数的定义是自然而然的:)
另外,可以参考我的公众号的两篇文章:
加油!:)
012019-06-07
相似问题