关于递归的定义以及参数问题?

来源:7-6 稍复杂的递归逻辑 Path Sum III

Pro养成记

2019-06-07

老师,我想请问一下,对于一个递归函数,我们应该如何选择参数? 是不是参数的选取对于函数的定义也会有影响?

写回答

1回答

liuyubobobo

2019-06-07

是的!


递归的参数不是选出来的,是根据你的逻辑定义出来的。这一点在动态规划中尤其明显。


我不认为有通用的,统一的,参数定义的方式,如果是那样的话,写递归函数就太简单了,算法设计也就太简单了,大家掌握这个统一的方法就好了。事实上不是这样的,具体逻辑是根据不同的问题定义出来的,参数也是根据不同的逻辑定义出来的。快排是递归,归并排序是递归,斐波那契是递归,汉诺塔是递归,树的遍历是递归,他们的递归逻辑和参数设计师完全不同的。这恰恰是算法设计的难点。


我的建议是,将七八九三章完整的看下来,如果时间允许,每一章的练习题都仔细思考,实践一下,应该足够让你找到一定的“感觉”。如果还不够,Leetcode上Backtracking和Depth-first Search相关的问题都是递归问题。可以再多“见识”一些。


关键是发现问题本身的递归性质,一旦发现了递归性质,参数的定义是自然而然的:)


另外,可以参考我的公众号的两篇文章:

https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247483836&idx=1&sn=90854aa76507281403e4dd9cd434a12b&chksm=fd8caefacafb27ec78f999fde4f1217c04c6e2ff28cf51fe511d8fa29d484d9281ff91de8c9c&token=1408864149&lang=zh_CN#rd

https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247483856&idx=1&sn=47a72cee1190aefc06c24fea78f78484&chksm=fd8cae96cafb2780f2634bbeece1608f321ea2698523869ff6d0c58497ad2dfbf5fa1233b0dd&token=1408864149&lang=zh_CN#rd


加油!:)

0
1
Pro养成记
非常感谢!
2019-06-07
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7410 学习 · 1150 问题

查看课程